Title: OpenEJB
1OpenEJB - An Open Source Enterprise JavaBeans
Container System
OpenEJB
An Open Source Enterprise JavaBeans Container
System http//openejb.sf.net
OpenEJB
2OpenEJB - An Open Source Enterprise JavaBeans
Container System
What is OpenEJB?
A modular, configurable, customizable, open
source EJB container system.
OpenEJB
3OpenEJB - An Open Source Enterprise JavaBeans
Container System
What is OpenEJB?
- OpenEJB is
- Container system
- Modular
- Configurable
- Customizable
- Open Source
An EJB 1.1 container System OpenEJB is a
pre-built, self-contained, portable EJB container
system that can be plugged into any application
server environment. OpenEJB provides a clear
separation of responsibilities between the EJB
container and the EJB server. Through the
Container Provider Interface (CPI), an
application server vendor can use the OpenEJB
container system to obtain an instant and
customizable EJB 1.1 platform.
OpenEJB
4OpenEJB - An Open Source Enterprise JavaBeans
Container System
What is OpenEJB?
- OpenEJB is
- Container system
- Modular
- Configurable
- Customizable
- Open Source
Modular not monolithic The OpenEJB container
system defines lightweight and flexible
interfaces that allow vendors to integrate
OpenEJB into their application server products
easily. OpenEJB provides application server
vendors without EJB support a fast track to EJB
compliance. OpenEJB also opens up the integration
of transaction, security, and persistence
services so that vendors and customers alike can
choose the services that are the most appropriate
for their EJB platforms. Service providers can
quickly adapt their products to OpenEJB SPI,
allowing them to compete with other vendors on
the quality of their service.
OpenEJB
5OpenEJB - An Open Source Enterprise JavaBeans
Container System
What is OpenEJB?
- OpenEJB is
- Container system
- Modular
- Configurable
- Customizable
- Open Source
Highly Configurable OpenEJB can be configured so
that containers are partitioned across bean
types. Multiple containers can be created and
each can be configured differently. For example,
you might create two Stateful SessionBean
containers. You could configure one to timeout
beans in five minutes and configure the other to
have no timeout at all. You can also change the
transaction, security, and resource managers for
OpenEJB itself. This allows you to use the same
EJB container system throughout an enterprise,
yet doesnt needlessly bind you to only one
transaction and security service. One OpenEJB
platform could use the Tyrex, and LDAP for
transactions and security, while another might
use Encina transactions and an ODBMS for security.
OpenEJB
6OpenEJB - An Open Source Enterprise JavaBeans
Container System
What is OpenEJB?
- OpenEJB is
- Container system
- Modular
- Configurable
- Customizable
- Open Source
Customizable OpenEJB provides a core package
that is a powerful default implementation of a
container system. While this core is well
engineered for performance and efficiency, it is
fairly simple to swap out nearly any aspect of
the core system in favor of custom
implementations. For example, the passivation
strategy in the stateful container, which
currently writes to a file, can be swapped out in
favor of one that writes to a RDMBS or some other
secondary storage.
OpenEJB
7OpenEJB - An Open Source Enterprise JavaBeans
Container System
What is OpenEJB?
- OpenEJB is
- Container system
- Modular
- Configurable
- Customizable
- Open Source
OpenEJB is Open Source OpenEJB is an open source
software project, hosted at SourceForge, and
available under a BSD-style license that is
identical to the Apache license. The project
was founded in December 1999 by Richard
Monson-Haefel and David Blevins, and announced at
the 2000 OReilly Java Conference. OpenEJB has
been strongly adopted by the open source and
business communities. Apple Computer recently
announced its use of OpenEJB to provide
WebObjects 5.1 with full EJB 1.1 support.
OpenEJB
8OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture
OpenEJB
9Application Server
OpenEJB CPI
OpenEJB
Stateful Bean Containers
Stateless Bean Containers
Entity Bean Containers
OpenEJB SPI
JTA Transaction Manager
Security Manager
Resource Managers
OpenEJB
10Application Server
OpenEJB CPI
OpenEJB
Stateful Bean Containers
Stateless Bean Containers
Entity Bean Containers
OpenEJB SPI
JTA Transaction Manager
Security Manager
Resource Managers
OpenEJB
11OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture Application Server
Application Server
OpenEJB CPI
- Definition
- Any component wishing to serve or deliver
Enterprise JavaBeans. - Also Known As
- Server Adapter
- Responsibilities
- Remote client access to OpenEJB
- Implement the beans remote and home
interfaces. - Distribute its implementation of the remote and
home interfaces. - Provide clients with a JNDI name space for
looking up beans. - Delegate method invocations to the container.
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
12OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture Application Server
Application Server
OpenEJB CPI
- Known Uses
- The IntraVM Server
- Allows for interaction among beans in the same
virtual machine. - Interacts directly with the container
- Enforces the remote copying semantics required
by the EJB specification. - Immutable objects created by the IntraVM are
not serialized. These include the EJBMetaData,
Handle, and HomeHandle. - Uses a pluggable API for generation of the
EJBHome and EJBObjects. - Provides non-bean clients with a global JNDI
namespace so that beans may be looked up by
applications or linked by other JNDI namespaces
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
13OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture Application Server
Application Server
OpenEJB CPI
- Known Uses
- The Reference Implementation (RI) Server
- A simple implementation of an application
- Intended to be used as a reference to those
wishing to integrate OpenEJB into their own
application server. - Is not production quality or for production
use. - Allows beans to be looked up via JNDI and
accessed remotely.
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
14OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture Application Server
Application Server
OpenEJB CPI
- Known Uses
- The OpenEJB/CORBA adapter
- Allows to plug any CORBA ORB implementation
that provides Java mapping 2.3, RMI over IIOP,
POA. - Allows beans in OpenEJB to be accessed as
EJBObjects by Java clients or as CORBA objects to
any CORBA application. - Future Uses
- Integration with any other client/server
technology or platforms.
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
15OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture OpenEJB
Application Server
OpenEJB CPI
- Description
- A static API that requires
- 1 Application Server implementation
- 1 Transaction Manager
- 1 Security Manager
- N Resource Manager(s)
- Also Known As
- Container System
- OpenEJB 1.1 Specification
- More formal and detailed set of contracts and
involved interfaces is specified in the OpenEJB
1.1 specification. A draft of this specification
is available on the website.
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
16OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture Container
Application Server
OpenEJB CPI
- Definition
- An Enterprise JavaBeans container that adopts
the OpenEJB architecture and implements the
org.openejb.Container interface. - Responsibilities
- Enforce the EJB 1.1 container-bean contract.
- Use the Transaction Manager assigned to the
container system to assist in handling
transactions. - Use the Security Manager assigned to the
container system to assist in enforcing security
and privileges.
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
17OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture Container
Application Server
OpenEJB CPI
- Known Uses
- Stateful SessionBean Container, commonly called
a Stateful Container. - Stateless SessionBean Container, commonly
called a Stateless Container. - Entity Container for EntityBeans with
Bean-Managed Persistence, commonly called a BMP
Container. BMP standing for Bean-Managed
Persistence. - Entity Container for EntityBeans with
Container-Managed Persistence, commonly called a
CMP Container. CMP standing for
Container-Managed Persistence. - Future Uses
- EJB 2.0 JMS/Message-Driven Bean Container.
- EJB 2.0 CMP EntityBean Container.
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
18OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture Container
Application Server
OpenEJB CPI
- Pluggable Containers
- OpenEJB allows anyone to create new containers
and add them to the container system. This
ability allows vendors and advanced users to
create custom containers that meet their specific
needs. The ability to create custom containers
is particularly useful in regards to CMP
containers as it would allow containers to be
openly developed that persist to industry
standard forms of data storage such as Oracle, MS
SQL Server or Ingres. - This also opens the door to the creation of new
container and bean types that arent defined by
the EJB specifications.
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
19OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture Container Provider Interface
Application Server
OpenEJB CPI
- Definition
- A set of interfaces and contracts that define
the behavior between the OpenEJB container system
and an Application server - Also Known As
- The CPI
- OpenEJB 1.1 Specification
- More formal and detailed set of contracts and
involved interfaces is specified in the OpenEJB
1.1 specification. A draft of this specification
is available on the website.
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
20OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture Primary Services
Application Server
OpenEJB CPI
- Definition
- Logical sets of functionality used by a
container continuously at runtime. - Transaction Manager
- Provides the container with transactional
integrity. - Security Manager
- Provides role-based authorization control.
- Resource Manager
- Provides enterprise beans with connections to
transactional resources like JDBC or JMS.
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
21OpenEJB - An Open Source Enterprise JavaBeans
Container System
The Architecture Service Provider Interface
Application Server
OpenEJB CPI
- Definition
- A set of interfaces and contracts that define
the responsibilities the primary services have
to the container system. - Also Known As
- The SPI
OpenEJB
Container
OpenEJB SPI
Transaction Manager
Security Manager
Resource Manager
OpenEJB
22Application Server
OpenEJB CPI
OpenEJB
Stateful Bean Containers
Stateless Bean Containers
Entity Bean Containers
OpenEJB SPI
JTA Transaction Manager
Security Manager
Resource Managers
OpenEJB
23Remote Client Example
App Server provided
Primary Services
OpenEJB
EJB Object
client
server
container
bean
security manager
transaction manager
businessMethod()
Protocol X
invoke()
isCallerAuthorized()
getTransaction()
businessMethod()
getTransaction()
OpenEJB
24Local Client Example
OpenEJB
Primary Services
EJB Object
bean
handler
container
bean
security manager
transaction manager
businessMethod()
invoke()
copy()
invoke()
isCallerAuthorized()
getTransaction()
businessMethod()
getTransaction()
OpenEJB
copy()
25OpenEJB - An Open Source Enterprise JavaBeans
Container System
Other Pluggable Parts
OpenEJB includes other pluggable parts. These
pluggable parts allow you to greatly customize
the behavior of the container system itself by
swapping out one implementation for another. For
example, OpenEJB has two different algorithms
that passivate and activate Stateful
SessionBeans. With this approach, you can
configure OpenEJB to match the needs of your
target environment or application. If none of
the implementations match your needs, you can
implement your own. These pluggable parts
include
OpenEJB
26OpenEJB - An Open Source Enterprise JavaBeans
Container System
Test Suite
- Runs over 4700 tests
- Covers over 80 of the OpenEJB code base.
- Uses to the JUnit testing framework
- Unit tests
- Tests OpenEJB specific APIs
- EJB 1.1 compliance tests
- Tests all interfaces in the javax.ejb.
package. - Can be ran against ANY Enterprise JavaBeans
platform - Can be used by Application Servers to test if
OpenEJB had been properly integrated into their
platform.
OpenEJB
27OpenEJB - An Open Source Enterprise JavaBeans
Container System
Development Roadmap
- Easier Configuration with Hot Deploy
- JMS/Message Driven Container EJB 2.0
- CMP Entity Container EJB 2.0
OpenEJB
28OpenEJB - An Open Source Enterprise JavaBeans
Container System
OpenEJB
An Open Source Enterprise JavaBeans Container
System
openejb.sf.net David Blevins OpenEJB
Co-Founder, Project Lead david.blevins_at_visi.com
OpenEJB