【Java开源代码栏目提醒】:网学会员为需要Java开源代码的朋友们搜集整理了AccountClient.java相关资料,希望对各位网友有所帮助!
package examples;
import javax.ejb.*;
import javax.naming.*;
import java.rmi.*;
import javax.rmi.*;
import java.util.*;
/**
* Account Entity Bean测试客户端
*/
public class AccountClient {
public static void main(String[] args) throws Exception {
Account account = null;
try {
/*
* 通过JNDI获得对home对象的引用,
* home对象是EJB对象的对象工厂
*/
Context ctx = new InitialContext(System.getProperties());
Object obj = ctx.lookup("AccountHome");
AccountHome home =
(AccountHome) javax.rmi.PortableRemoteObject.narrow(obj, AccountHome.class);
System.err.println("帐户余额总计= " + home.getTotalBankValue());
/*
* 新建一个EJB对象,这一操作会在数据库中插入一条记录
*/
home.create("123-456-7890", "John Smith");
/*
* 查找Account Bean
*/
Iterator i = home.findByOwnerName("John Smith").iterator();
if (i.hasNext()) {
account = (Account) i.next();
}
else {
throw new Exception("Could not find account");
}
/*
* 调用balance() 商业方法
*/
System.out.println("Initial Balance = " + account.getBalance());
account.deposit(100);
System.out.println("帐户余额 = " + account.getBalance());
System.out.println("帐户余额总计 = " + home.getTotalBankValue());
/*
* 从EJB对象获取主键类
*/
AccountPK pk = (AccountPK) account.getPrimaryKey();
account = null;
account = home.findByPrimaryKey(pk);
/*
* Print out current balance
*/
System.out.println("找到帐户 " + pk + ".的余额 = " + account.getBalance());
/*
* 超额取钱,抛出异常
*/
account.withdraw(150);
}
catch (Exception e) {
System.out.println("Caught exception!");
e.printStackTrace();
}
finally {
try {
System.out.println("Destroying account..");
if (account != null) {
account.remove();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}