Bean Types Session Beans

Download Report

Transcript Bean Types Session Beans

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
Developing a Distributed Object
Distributed TX’s
Security
Data Access
Business
Logic
Legacy Integration
Authorization
Business Logic Developer
=
Salil “Number Crunch” Deshpande
CF = (R - O)(1 - T) + Dep(T) - NWC
System Developer
=
Geoff “Codermaniac” Bullen
Productive Distributed Developer???
Distributed TX’s
Security
Data Access
Business
Logic
Legacy Integration
Authorization
=
EJB Acknowledges “Roles”
Bean Provider
Logic Developer
No Transaction Code
No Concurrency Code
No Security Code
No Distribution of Beans
Assembler
Composes Applications
Generally Understands Logic
Expert at Apps, Applets
Servlets etc..
Usually builds GUI
Deployer
Deployment to
Operational Environment
Defines Security Roles
Defines Transactions
A Systems Expert
Sys Admin
System Manager
Keeps System
Operational
Typically a good card
player
The EJB Development Flow
EJB Server
EJB Server
EJB
EJB
JBuilder
EJB
EJB
HTML
JSP
EJB
HTML
JSP
JBuilder
Servlet
Servlet
EJB Architecture & Roles
Bean Provider
Client App
Assembler
EJB
Deployer
EJB
Container
EJB Server
EJB Server Provider
System Admin
EJB 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
Identifying an EJB
EJB (ejb-jar)
EJB
Remote
EJB Home
Bean
Instance
Deployment Descriptor
Bean Architecture
Container
EJB Home
Remote
Interface
Bean Instance
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.
Clients View of Session Bean
EJB Server
Windows
Client
Java
Client
Browser
Client
Mobile
Client
Thin Client
EJB Container
cart.addItem(22);
cart.purchase()
cart.remove()
cart.addItem(66);
Cart
CartBean
CartHome cartHome =
CartHome
javax.rmi.Portable
RemoteObject.narrow(
Cart
cart = cartHome.create(…);
initialContext.lookup(...), CartHome.class);
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.
Session Bean Interacting with Entity Bean
EJB Server
Windows
Client
Java
Client
EJB Container
order.findByPrimaryKey(orderNo);
Cart
CartBean
ejbLoad();
ejbStore();
OrderBean
Browser
Client
Mobile
Client
Thin Client
SQL
JNDI
DB
OrderHome
placeOrder();
orderComplete()
Order
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
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 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
The Inprise EJB Solution “Kodiak”
Inprise EJB Infrastructure
CORBA 2.3
Objects By Value
ATM
Session
Bean
Acct
Entity
Bean
Language Independent Client
RMI/
IIOP
IIOP/SSL
Access Control
CosNaming
LDAP
Container
JNDI
Naming
Can generate IDL
from the Home and
Remote Interfaces.
Java DB
JTS
2 Phase
Commit
CosTransactions
Distributed
2 Phase Commit
Database
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
JNDI
Naming
Storage
Container
Distributed Transactions
Distributed Security Domains
Language Interoperability
JTS/ITS
Container
JTS/ITS