package examples.ejb.basic.containerManaged; import java.io.Serializable; import java.rmi.RemoteException; import java.rmi.Remote; import javax.ejb.*; import java.util.*; /** * AccountBean is an EntityBean. This EJBean illustrates: * * * @author Copyright (c) 1998 by WebLogic, Inc. All Rights Reserved. * @author Copyright (c) 1998-1999 by BEA WebXpress. All Rights Reserved. */ public class AccountBean implements EntityBean { final static boolean VERBOSE = true; // ----------------------------------------------------------------- // private variables private transient EntityContext ctx; // ----------------------------------------------------------------- // public container managed variables public String accountId; // also the primary Key public double balance; public String type; // "Checking" // ----------------------------------------------------------------- // EntityBean implementation /** * Returns the Primary Key identifying this EJBean. * * @return String Identification */ private String id() { return "" + System.identityHashCode(this) + ", PK = " + (String) ((ctx == null) ? "nullctx" : ((ctx.getPrimaryKey() == null ? "null" : ctx.getPrimaryKey().toString()))); } /** * This method is required by the EJB Specification, * but is not used by this example. * */ public void ejbActivate() { if (VERBOSE) System.out.println("AccountBean.ejbActivate (" + id() + ")"); } /** * This method is required by the EJB Specification, * but is not used by this example. * */ public void ejbPassivate() { if (VERBOSE) System.out.println("AccountBean.ejbPassivate (" + id() + ")"); } /** * Sets the EntityContext for the EJBean. * * @param ctx EntityContext */ public void setEntityContext(EntityContext ctx) { if (VERBOSE) System.out.println("AccountBean.setEntityContext (" + id() + ")"); this.ctx = ctx; } /** * Unsets the EntityContext for the EJBean. * */ public void unsetEntityContext() { if (VERBOSE) System.out.println("AccountBean.unsetEntityContext (" + id() + ")"); this.ctx = null; } /** * This method is required by the EJB Specification, * but is not used by this example. * */ public void ejbLoad() { if (VERBOSE) System.out.println("AccountBean.ejbLoad (" + id() + ")"); } /** * This method is required by the EJB Specification, * but is not used by this example. * */ public void ejbStore() { if (VERBOSE) System.out.println("AccountBean.ejbStore (" + id() + ")"); } /** * This method is required by the EJB Specification, * but is not used by this example. * * @exception javax.ejb.RemoveException * if the EJBean does not allow removing the EJBean */ public void ejbRemove() throws RemoveException { if (VERBOSE) System.out.println("AccountBean.ejbRemove (" + id() + ")"); } /** * This method corresponds to the create method in the home interface * "AccountHome.java". * The parameter sets of the two methods are identical. When the client calls * AccountHome.create(), the container (which in WebLogic EJB is * also the home) allocates an instance of this EJBean and * calls AccountBean.ejbCreate(). *

* For container-managed persistence, ejbCreate() returns * a void, unlike the case of bean-managed * persistence, where it returns a primary key. * * @param accountID String Account ID * @param initialBalance double Initial Balance * @param type String Account type * @exception javax.ejb.CreateException * if there is a problem creating the bean */ public void ejbCreate(String accountId, double initialBalance, String type) throws CreateException { if (VERBOSE) System.out.println("AccountBean.ejbCreate( id = " + System.identityHashCode(this) + ", PK = " + accountId + ", " + "initial balance = $ " + initialBalance + ", type = " + type + ")"); this.accountId = accountId; this.balance = initialBalance; this.type = type; } /** * This method is required by the EJB Specification, * but is not used by this example. * * @param accountID String Account Identification * @param initialBalance double Initial Balance * @param type String Account type */ public void ejbPostCreate(String accountId, double initialBalance, String type) { if (VERBOSE) System.out.println("AccountBean.ejbPostCreate (" + id() + ")"); } // Application defined methods /** * Adds amount to balance. * * @param amount double Amount * @return double balance */ public double deposit(double amount) { if (VERBOSE) System.out.println("AccountBean.deposit: Depositing $" + amount + " into '" + accountId + "'"); balance += amount; return balance; } /** * Subtracts amount from balance. * * @param amount double Amount * @return double Balance * @exception ProcessingErrorException * if Amount > Balance */ public double withdraw(double amount) throws ProcessingErrorException { if (VERBOSE) System.out.println("AccountBean.withdraw: Withdrawing $" + amount + " from '" + accountId + "'"); if (amount > balance) { throw new ProcessingErrorException("Request to withdraw $" + amount + "; is more than balance $" + balance + " in account " + accountId); } balance -= amount; return balance; } /** * Returns current balance. * * @return double Balance */ public double balance() { if (VERBOSE) System.out.println("AccountBean.balance (" + id() + ")"); return balance; } /** * Returns account type. * * @return String Type */ public String type() { return type; } }