400 likes | 530 Views
Enterprise Java Bean Technology Briefing Markus Hebach. Agenda. The Need for a Server Side Component Model EJB 1.0 Architecture Overview Where does CORBA fit in? The Inprise EJB Solution - “Kodiak”. The Need for a Server Side Component Model. Distributed TX’s. Security. Data Access.
E N D
Enterprise Java Bean Technology Briefing Markus Hebach
Agenda • The Need for a Server Side Component Model • EJB 1.0 Architecture Overview • Where does CORBA fit in? • The Inprise EJB Solution - “Kodiak”
Distributed TX’s Security Data Access Legacy Integration Authorization Developing a Distributed Object Business Logic
Salil “Number Crunch” Deshpande Business Logic Developer P/E Ratio Net Present Value = After Tax Operating Cash Flow Holding Period Returns CF = (R - O)(1 - T) + Dep(T) - NWC
Geoff “Codermaniac” Bullen System Developer Distributed Transactions = Persistence Authentication Concurrency Authorization
= Productive Distributed Developer??? Distributed TX’s Security Data Access Business Logic Legacy Integration Authorization
EJB Acknowledges “Roles” Bean Provider Deployer Sys Admin Assembler Logic Developer No Transaction Code No Concurrency Code No Security Code No Distribution of Beans System Manager Keeps System Operational Typically a good card player Deployment to Operational Environment Defines Security Roles Defines Transactions A Systems Expert Composes Applications Generally Understands Logic Expert at Apps, Applets Servlets etc.. Usually builds GUI
EJB EJB JBuilder JBuilder HTML JSP Servlet EJB EJB EJB EJB Server EJB Server HTML JSP Servlet The EJB Development Flow
Assembler Bean Provider Deployer System Admin EJB Server Provider EJB Architecture & Roles Client App EJB EJB Server Container EJB
Enterprise Java Beans “The Enterprise Java Beans Architecture is a component architecture for the development and deployment of object oriented distributed enterprise-level applications”. - Sun Microsystems EJB 1.0 Specification March 1998
Responsibilities of the Container • Proper creation, initialization, and removal of beans • Ensuring that methods run in the proper transaction context • Visibility of the home object in a JNDI-accessible namespace • Swapping to and from secondary storage (for session beans) • Persistence management (for container managed entity beans) • Availability of a home object implementing creation and lookup services • Implementation of certain basic security services
EJB (ejb-jar) Identifying an EJB EJB Home EJB Remote Bean Instance Deployment Descriptor
Bean Architecture EJB Home Bean Instance Container Remote Interface
EJB Home The Home Interface contains the signatures of the creation methods for the given bean. Each Create method must have a corresponding ejbCreate method in the bean. Remember - Only the container can actually create the instances! public interface myHome extends EJBHome { public myObject create() throws RemoteException; public myObject create(String str) throws RemoteException; }
EJB Remote In a similar fashion, the developer must create a “Remote Interface” which describes the business methods (signatures) of the bean that the developer would like the client to have access to. public interface Account extends javax.ejb.EJBObject { public void deposit(double amount) throws RemoteException; public void withdraw(double amount)throws RemoteException; public double balance() throws RemoteException; }
EJB Object The methods in your bean will NEVER be invoked directly from the client. The client calls the bean’s methods indirectly through the EJBObject, which acts as a proxy. public interface javax.ejb.EJBObject extends java.rmi.Remote { public EJBHome getEJBHome() throws RemoteException; public Object getPrimaryKey() throws RemoteException; public Handle getHandle() throws RemoteException; public void remove() throws RemoteException, public boolean isIdentical(EJBObject other) throws RemoteException; }
Bean Types • Session Beans (Required for EJB 1.0) • Entity Beans (Optional for EJB 1.0) Types differentiated by Interface implemented and by the type declaration in the deployment descriptor.
Bean Types • Session Beans • Execute on behalf of single client • Can be transaction aware • Does not represent directly shared data in a database • Are relatively short lived • Are removed when the EJB server crashes
Bean Types • Entity Beans • Represents data in a database • Are transactional • Allows shared access by multiple users • Survives crash of EJB server
Session Bean Types Stateless Session The bean does not contain conversational state between method invocations - as a consequence any session bean instance can be used for any client. Stateless beans are designed to be pooled.
Session Bean Types Stateful Session The bean contains conversational state which is kept across method invocations and transactions. Once a client has obtained a specific session bean it must use this instance for the life of the session.
WindowsClient JavaClient BrowserClient MobileClient Thin Client Clients View of Session Bean EJB Server EJB Container cart.addItem(66); cart.addItem(22); cart.purchase() cart.remove() Cart CartBean CartHome cartHome = javax.rmi.Portable RemoteObject.narrow( initialContext.lookup(...), CartHome.class); CartHome Cart cart = cartHome.create(…); JNDI
Entity Bean Types Bean Managed Persistence The entity bean implementation is responsible for implementing persistence. The bean provider writes the code to access the underlying database or application. These calls are placed in the methods ejbCreate(), ejbFind(), ejbRemove(), ejbLoad() and ejbStore().
Entity Bean Types Container Managed Persistence The container is responsible for implementing the persistence. Instead of the bean provider implementing the database access code, the container is responsible for generating the appropriate code and its execution. The fields of the entity bean, which are managed by the container are specified in the deployment descriptor.
WindowsClient JavaClient BrowserClient MobileClient Thin Client Session Bean Interacting with Entity Bean EJB Server EJB Container order.findByPrimaryKey(orderNo); Cart CartBean OrderHome ejbLoad(); ejbStore(); placeOrder(); Order OrderBean orderComplete(); SQL JNDI DB
The Session Bean Interface package javax.ejb; public interface SessionBean extends EnterpriseBean { void setSessionContext(SessionContext s) throws RemoteException; void ejbRemove() throws RemoteException; void ejbActivate() throws RemoteException; void ejbPassivate() throws RemoteException; }
The Entity Bean Interface package javax.ejb; public interface EntityBean extends EnterpriseBean { void setEntityContext(EntityContext e) throws RemoteException; void unsetEntityContext() throws RemoteException; void ejbRemove() throws RemoteException; void ejbActivate() throws RemoteException; void ejbPassivate() throws RemoteException; void ejbLoad() throws RemoteException; void ejbStore() throws RemoteException; }
Holes in the EJB 1.0 Specification • No definition of Interoperability between containers. • Does not prescribe which RMI implementation should be used. • No definition for propagating Transaction Contexts • No recommendations for bridging security domains • No standard Container API
The role of CORBA in EJB “The Enterprise Java Beans Architecture will be compatible with CORBA. - EJB 1.0 Specification Section 2.1 Overall Goals
EJB 1.0 Section 4.4 Standard CORBA Mapping “To ensure interoperability for multi-vendor environments, we define a standard mapping of the Enterprise JavaBean client’s view contract to CORBA.” The mapping to CORBA covers: 1. Mapping of the EJB Client interfaces to CORBA IDL 2. Propagation of transaction context 3. Propagation of security context
Results of the CORBA Mapping • On the wire interoperability between EJB Servers from multiple vendors. • Enables non-Java clients to access EJB’s. • CORBA Object Services allow security and transactions to be handled in a distributed vendor independent manner.
“Open” implementation choices • RMI/IIOP • JNDI over COSNaming and/or LDAP • JTS/COSTransactions and IIOP • X.509 certificates/IIOP over SSL
CORBA 2.3 Objects By Value IIOP/SSL Access Control CosNaming LDAP Can generate IDL from the Home and Remote Interfaces. CosTransactions Distributed 2 Phase Commit Complete Java Database Inprise EJB Infrastructure Language Independent Client ATM Session Bean RMI/ IIOP Container JNDI Naming Acct Entity Bean JTS 2 Phase Commit Java DB Database
Inprise EJB Server Operation Modes • Development Mode • All services will run together in a single process • JNDI/Lightweight Naming Service • Lightweight JTS Implementation • All Java Database for Container Managed Persistence • Operations Mode • Fully Distributed Service • JNDI/COSNaming • ITS/COSTransaction implementation
JNDI Naming Container Storage Container JTS/ITS JTS/ITS A Fully Distributed EJB Solution Distributed Transactions Distributed Security Domains Language Interoperability