customerbean.java
来自「weblogic应用全实例」· Java 代码 · 共 225 行
JAVA
225 行
package examples.ejb20.relationships.many2many;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
import javax.ejb.CreateException;
import javax.ejb.DuplicateKeyException;
import javax.ejb.EJBException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.FinderException;
import javax.ejb.NoSuchEntityException;
import javax.ejb.ObjectNotFoundException;
import javax.ejb.RemoveException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
/**
* 代表一个客户并演示AccountBean的多对多关系
*
*/
//这个类是实体Bean,必须实现接口 EntityBean
abstract public class CustomerBean implements EntityBean {
//设置是否打印控制台
final static boolean VERBOSE = true;
//声明实体上下文变量
private EntityContext ctx;
//构造方法
public CustomerBean() {}
/**
* 为EJBean设置实体EJB上下文
*
* @参数 ctx EntityContext
*/
public void setEntityContext(EntityContext ctx) {
log("setEntityContext called (" + id() + ")");
this.ctx = ctx;
}
/**
* 取消实体上下文设置
*
*/
public void unsetEntityContext() {
log("CustomerBean.unsetEntityContext (" + id() + ")");
this.ctx = null;
}
/**
* 容器管理的属性
*/
abstract public java.lang.String getName();
abstract public void setName(java.lang.String val);
abstract public Collection getAccounts();
abstract public void setAccounts(Collection accts);
/**
* 返回主键标识这个EJBean.
*
* @返回 String 标识
*/
private String id() {
return "" + System.identityHashCode(this) + ", PK = " +
(String) ((ctx == null) ? "nullctx"
: ((ctx.getPrimaryKey() == null ?
"null" : ctx.getPrimaryKey().toString())));
}
/**
* 这是本类必须实现的方法,在本例中没有用到
*/
public void ejbActivate() {
log("CustomerBean.ejbActivate (" + id() + ")");
}
/**
* 这是本类必须实现的方法,在本例中没有用到
*/
public void ejbPassivate() {
log("CustomerBean.ejbPassivate (" + id() + ")");
}
/**
* 这是本类必须实现的方法,在本例中没有用到
*/
public void ejbLoad() {
log("CustomerBean.ejbLoad (" + id() + ")");
}
/**
* 这是本类必须实现的方法,在本例中没有用到
*/
public void ejbStore() {
log("CustomerBean.ejbStore (" + id() + ")");
}
/**
* 这是本类必须实现的方法,在本例中没有用到
*/
public void ejbRemove()
throws RemoveException
{
log("CustomerBean.ejbRemove (" + id() + ")");
}
/**
*
*/
public String ejbCreate(String name)
throws CreateException
{
log("CustomerBean.ejbCreate( id = " + System.identityHashCode(this) +
", PK = " + name + ")");
setName(name);
return null; // See 9.4.2 of the EJB 1.1 specification
}
/**
*/
public void ejbPostCreate(String name) throws CreateException
{
log("CustomerBean.ejbPostCreate (" + id() + ")");
setAccounts(null);
}
/**
* 增加账号
*
* @异常 java.rmi.RemoteException 当系统通讯发生故障时抛出
*/
public void addAccount(Account acct)
{
log("CustomerBean.addAccount");
Collection accts = getAccounts();
accts.add(acct);
}
/**
* 删除账号
*
* @异常 java.rmi.RemoteException 当系统通讯发生故障时抛出
*/
public void removeAccount(Account acct)
{
log("CustomerBean.removeAccount");
Collection accts = getAccounts();
accts.remove(acct);
}
/**
* 返回账号集合
*
* @返回 集合
* @异常 java.rmi.RemoteException 当系统通讯发生故障时抛出
*/
public Collection getAllAccounts()
{
log("CustomerBean.getAllAccounts");
List returnList = new ArrayList();
Collection accts = getAccounts();
Iterator iter = accts.iterator();
log("accounts------------------------------");
while (iter.hasNext()) {
Object ob = iter.next();
log(ob.getClass().getName());
returnList.add(ob);
}
return returnList;
}
/**
* 返回相关账号的结算
*
* @返回 结算
* @异常 java.rmi.RemoteException 当系统通讯发生故障时抛出
*/
public double getBalance() {
log("CustomerBean.balance (" + id() + ")");
double bal = 0;
try {
Iterator accts = getAccounts().iterator();
while (accts.hasNext()) {
Account acct = (Account)accts.next();
bal += acct.balance();
}
}
catch (Exception e) {
e.printStackTrace();
throw new EJBException(e);
}
return bal;
}
// 也可以使用WebLogic的日志服务
private void log(String s) {
if (VERBOSE) System.out.println(s);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?