Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Enterprise Java Beans Ye Zhou CS6704 Presentation Virginia Tech Entity Beans An in-memory Java representation of persistent data -- a view into a database Long-lived – as long as data lives Shared access from multiple users Transactional Can survive from the server crash Entity Bean Model Entity Bean class ejbLoad() – load state from underlying DB ejbStore() – synchronize the state regularly ejbRemove() – remove object when client calls ejbActivate() – bean instance out of pool ejbPassivate() – bean instance disassociated setEntityContext() – called by container on creation unsetEntityContext() – called by container before being removed Primary Key class Unique Identifier Entity Bean usage BMP & CMP BMP – Bean Managed Persistence an entity bean that synchronizes its state with the database manually CMP – Container Managed Persistence EJB container will do it instead BMP & CMP Entity bean example Entity bean example import javax.ejb.*; import java.rmi.remoteException; public interface AccountHome extends EJBHome{ Account create(String accountID, String ownerName) throws CreateException, AccountException; public Account findByPrimaryKey(AccountPK key) throws FinderException, RemoteException; public Collection findByOwnerName(String name) throws FinderException, RemoteException; public double getTotalBankValue() throws RemoteException, AccountException; } Entity bean example import java.io.Serializable; public class AccountPK implements java.io.Serializable{ public String accountID; public AccountPK(String id){ this.accountID = id; } public String toString() { return accountID: } public boolean equals(Object account){ return ((AccountPK)account).accountID.equals(accountID); } } Entity bean example public class AccountBean implements EntityBean{ protected EntityBeanContext ctx; private String accountID; //primary key private String ownerName; private double balance; //getter & setter on fields public setXXX(String value) public String getXXX() … Entity bean example //Business Logic methods public void Deposit(double amt) throws AccountException { balance+=amt; } public void WithDraw(double amt) throws AccountException { if(amt > balance) { throw new AccountException(accountID+“Limit reached”); } else balance-=amt; } Entity bean example //EJB required methods public void ejbLoad() { AccountPK account = (AccountPK) ctx.getPrimaryKey(); String id = account.toString(); PreparedStatement ps =null; Connection con=null; try{ con=getConnection(); ps = con.preparedStatement(“select owner, balance from accounts where id = ?”); ps.setString(1,id); ResultSet rs = ps.executeQuery(); rs.next(); ownerName = rs.getString(1); balance = rs.getDouble(2); }catch(Exception e){throw new EJBException(“Fail to load from DB”);} } Message-Driven Bean Motivation Performance: Reliability: RMI-IIOP is a blocking protocol RMI-IIOP can’t survive from the server failure Multiple senders and receivers: RMI-IIOP is connection-oriented, which is not possible for clients to broadcast the events to servers. Message-Driven Bean Definition A special EJB component that can receive JMS messages. Message-Driven Bean Life cycle Message-Driven Bean Characteristics No home interface, local home interface and remote interface It has a single, weakly-couple typed business method “OnMessage” No return values Stateless Do not send Exception back to clients Subscription can be durable or non-durable Message-Driven Bean example import javax.ejb.*; import javax.jms.*; public sampleBean implements MessageDrivenBean, MessageListener { protected MessageDrivenContext ctx; public void setMessageDrivenContext(MessageDrivenContext ctx) {this.ctx=ctx;} public void ejbCreate() {System.err.println(“bean initialized”);} Message-Driven Bean example public void onMessage(Message msg) { if(msg instanceOf TextMessage) { TextMessage tm=(TextMessage)msg; try{ String text = tm.getText(); System.err.println(“Text is”+text); }catch(JMSException e) { e.printStackTrace(); } } } public void ejbRemove() { System.err.println(“bean removed”);} } Transaction Features Types ACID Programmatic Declarative Client-initiated Package Javax.transaction.* Reference Ed Roman, “Mastering Enterprise Javabeans ”, John Wiley & Sons Inc., 2002 Linda DeMichiel, “Enterprise Javabeans Spec V2.0”, Sun Microsystem, 2001 Gopalan Raj,http://www.execpc.com/~gopalan/java/ejb.html