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 + -
显示快捷键?