enterprise java bean technology briefing markus hebach
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
Enterprise Java Bean Technology BriefingMarkus 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 The Need for a Server Side Component ModelComponent Model
Distributed TX’s
Security
Authorization
Data Access
Legacy Integration
Developing a Distributed Object
BusinessLogic
Business Logic Developer
=
Afte
r Tax
Ope
ratin
g Ca
sh F
low P/E Ratio
CF = (R - O)(1 - T) + Dep(T) - NWC
Net Present Value
Holding Period Returns Salil “Number Crunch” Deshpande
System Developer
=
Distributed Transactions
Persistence
Auth
entic
atio
n
Authorization
Concurrency
Geoff “Codermaniac” Bullen
Productive Distributed Developer???
BusinessLogic
Security
Distributed TX’s
Data Access
Legacy Integration
Authorization
=
EJB Acknowledges “Roles”
Bean Provider Assembler Deployer Sys Admin
Logic DeveloperNo Transaction CodeNo Concurrency CodeNo Security CodeNo Distribution of Beans
Composes ApplicationsGenerally Understands LogicExpert at Apps, Applets Servlets etc..Usually builds GUI
Deployment to Operational EnvironmentDefines Security RolesDefines TransactionsA Systems Expert
System ManagerKeeps System OperationalTypically a good cardplayer
The EJB Development Flow
JBuilderJBuilder
EJB EJB EJB
JBuilderJBuilder Servlet
HTMLJSP
EJB Server
EJB
EJB Server
EJB
HTMLJSP Servlet
EJB Architecture & Roles
EJB Server
Client AppClient App
EJBEJB
ContainerContainerEJBEJB
Bean Provider
EJB Server Provider
Assembler
Deployer
System Admin
EJB Architecture OverviewEJB Architecture Overview
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
Identifying an EJB
EJB (ejb-jar)
EJB Home EJB Remote
Bean Instance
Deployment Descriptor
Bean Architecture
EJB HomeEJB Home
Bean InstanceBean Instance
RemoteRemoteInterfaceInterface
Cont
aine
r
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 thebusiness 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 BeansRepresents data in a databaseAre transactionalAllows shared access by multiple usersSurvives crash of EJB server
Session Bean Types
Stateless SessionThe 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.
EJB Server
Clients View of Session Bean
EJB Container
Thin ClientThin Client
WindowsWindowsClientClient
JavaJavaClientClient
BrowserBrowserClientClient
MobileMobileClientClient
Cart
CartHomeCartBean
JNDI
CartHome cartHome = javax.rmi.Portable RemoteObject.narrow( initialContext.lookup(...), CartHome.class); Cart cart = cartHome.create(…);
cart.addItem(66);cart.addItem(22);cart.purchase()cart.remove()
Entity Bean Types
Bean Managed PersistenceThe 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 PersistenceThe 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.
EJB Server
DB
Session Bean Interacting with Entity Bean
EJB Container
Thin ClientThin Client
WindowsWindowsClientClient
JavaJavaClientClient
BrowserBrowserClientClient
MobileMobileClientClient
Cart CartBean
JNDI
OrderHome
OrderOrderBean
order.findByPrimaryKey(orderNo);
SQL
ejbLoad();placeOrder();orderComplete();
ejbStore();
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;}
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;}
The Entity Bean Interface
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
Where does CORBA fit in?Where does CORBA fit in?
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 IDL2. Propagation of transaction context3. 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/IIOPJNDI over COSNaming and/or LDAPJTS/COSTransactions and IIOPX.509 certificates/IIOP over SSL
The Inprise EJB Solution “Kodiak”The Inprise EJB Solution “Kodiak”
Inprise EJB Infrastructure
Language Independent ClientLanguage Independent ClientATMATMSessionSession
BeanBean
Java DBJava DBJTSJTS
2 Phase 2 Phase CommitCommit
JNDIJNDINamingNamingContainerContainerAcctAcct
EntityEntityBeanBean
Database
RMI/IIOP CosNaming
LDAP
CosTransactionsDistributed
2 Phase Commit
CORBA 2.3Objects By Value
Can generate IDL from the Home andRemote Interfaces.
IIOP/SSLAccess Control
Complete Java 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
A Fully Distributed EJB Solution
ContainerContainer
ContainerContainer
JNDIJNDINamingNaming
StorageStorage
JTS/ITSJTS/ITS
JTS/ITSJTS/ITS
Distributed TransactionsDistributed Security Domains
Language Interoperability