Transcript Lekcija10 - 01_EJB_Intro
Enterprise JavaBeans
Introduction and architecture
•
The beginning - Applets
One reason the Java initially gained popularity was its support for downloadable Java programs known as
applets
• Java applets were first introduced in 1995 • Applet executes only on the "
client
" platform environment of a system
•
Java on the server
Recognizing the potential for Java as a server language in Web environments, Sun Microsystems wrote the
Java Servlet
specification • Java servlet specification was finalized in 1997 • Servlets are Java programs designed to run on
Web server
machines
•
Servlets
Java servlets are best suited as a middle tier component connecting front-end Web requests with back-end data resources • However, servlets alone do not provide a sufficient model for true
enterprise computing
•
Three-tier architecture
Emerged in the 1990s to overcome the limitations of the two-tier architecture • The middle tier supports application server software, a functional extension of the Web server
Presentation tier Business logic tier Data tier
• • • • • • •
Advantages of multi-tier model
Scalability Better re-use Improved data integrity Improved security Reduced distribution Improved availability Hidden database structure
Java Platform Enterprise Edition
• Java EE technology aims to extend the reach of the Java platform to large-scale server environments • Industry standard for developing
portable
,
robust
,
scalable
,
distributed
and
secure multi-tier
server-side Java applications • The
Enterprise JavaBeans
specification is one of the several Java APIs in the Java EE
• •
Enterprise JavaBeans
EJB is a
server-side component
that encapsulates the business logic of an application Standard way to implement the 'business' code typically found in
enterprise applications
•
Motivation
Solutions to common problems are often
repeatedly re-implemented
by programmers • EJB were intended to handle such common concerns as: • • persistence transactional integrity • security in a standard way, leaving programmers free to concentrate on the particular problem
• •
EJB goals
To be the
standard component architecture
for building distributed object-oriented business applications To
make it easy
to write applications: developers will not have to understand • • • • low-level transaction and state management details multi-threading resource pooling and other complex low-level APIs
•
EJB goals
To follow the "
Write Once, Run Anywhere
" philosophy of the Java programming language • EJB can be developed once and then deployed on multiple platforms without recompilation or source code modification • To address the development, deployment, and run-time aspects of an enterprise application's life cycle
•
EJB goals
To define the contracts that enable tools from multiple vendors to develop and deploy components that can interoperate at run time • To provide interoperability between EJBs and non-Java programming language applications • To be compatible with • existing server platforms • other Java programming language APIs • CORBA (Common Object Request Broker Architecture)
• • •
Benefits of using EJBs
EJBs make it simpler to write applications • EJB container is charged with the task of making system services available to EJB components Component portability • • A simple, elegant component container model Java server components can be developed once and deployed in any EJB-compliant server Architecture independence • Independent of any specific platform, proprietary protocol, or middleware infrastructure
• •
Benefits of using EJBs
Built-in support for typical enterprise-level system services: • distributed objects • transactions • • database security • global naming Developer productivity • Standardization and automation of complex infrastructure services • Developers can create complex applications by focusing on business logic rather than environmental issues
• • •
EJB history
The EJB specification was originally developed in 1997 by IBM and later adopted by Sun Microsystems EJB 1.1 ( J2EE 1.2 ), 1999 • Session beans (stateless & stateful), Entity Beans • Remote interface EJB 2.0 ( J2EE 1.3 ), 2001 • • • Message-Driven Beans Entity 2.x and EJB QL Local and Remote interfaces
• • •
Adoption and criticism
Enterprise JavaBeans were quickly adopted by large companies Problems were quick to appear and the reputation of EJBs began to suffer APIs of the standard were too complex and counter-intuitive • required interfaces • • checked exceptions deployment descriptors
• • • •
Adoption and criticism
Businesses found that using EJBs to encapsulate business logic brought a performance penalty • Original specification only allowed for remote method invocation Long development cycle Tools made it easy to create and use EJBs by automating most of the repetitive tasks...
But tools did not make it easier to learn how to use the technology!
• •
EJB history
EJB 2.1 ( J2EE 1.4 ) 2003 • EJB Timer Service • • EJB Web Service Endpoints Minor EJB QL enhancements Reinventing EJBs • The functionality delivered by simpler frameworks like Spring and Hibernate was more useful to enterprise applications • EJB 3.0 specification was a radical departure from its predecessors
•
EJB history
• • • EJB 3.0 ( JavaEE 5.0 ) 2006 • Many improvements to its predecessor!
Metadata annotations configuration by exception A higher degree of control over bean persistence Much more simplified programming model for developing EJBs EJB 2 vs. EJB 3
Overview – EJB in JavaEE
http://java.sun.com/javaee/5/docs/tutorial/doc/bnabo.html
• • •
Types of EJBs
There are actually three kinds of EJBs: • session beans • • entity beans message-driven beans Session beans • • Implement the business logic of an application Can be Stateless or Stateful Entity beans • Are persisted in some data store
•
Session and Entity beans
In a typical scenario, the UI calls the methods of the session beans. Session beans can call other session beans and entity beans.
•
EJB 2: classes and interfaces
To implement an EJB, one needs to define: • Remote interface • Defines the business methods a bean presents to the outside world • Home interface • Defines the bean's life cycle methods: create, remove, find • Bean class • Actually implements the bean's business methods
Example: EJB 2 implementation
public interface TestSessionBean extends javax.ejb.EJBObject
{ public String sayHello() throws java.rmi.RemoteException
; } public interface TestSessionBeanHome extends javax.ejb.EJBHome
{ public TestSessionBean create() throws javax.ejb.CreateException, java.rmi.RemoteException
; }
Example: EJB 2 implementation
public class MyTestSessionBean implements SessionBean { public void ejbCreate() throws CreateException { } public void setSessionContext(SessionContext aContext) throws EJBException { } public void ejbActivate() throws EJBException { } public void ejbPassivate() throws EJBException { } public void ejbRemove() throws EJBException { } } public String sayHello(){ String msg="Hello! I am Session Bean"; System.out.println(msg); return msg; }
Example: EJB 3 implementation
@Remote public interface TestSessionBean { public String sayHello(); } @Stateless public class MyTestSessionBean implements TestSessionBean { public String sayHello(){ String msg="Hello! I am Session Bean"; System.out.println(msg); return msg; } }
• • • •
EJB server and container
The EJB server provides an environment that supports the execution of applications developed using EJBs An
EJB server
manages and coordinates the allocation of resources to the applications The EJB server must provide one or more EJB containers An
EJB container
manages the enterprise beans contained within it
•
EJB container
For each enterprise bean, the container is responsible for • • • • • • • registering the object providing a remote interface for the object creating and destroying object instances checking security for the object managing the active state for the object coordinating distributed transactions (optionally) manage all persistent data within the object
• •
Packaging Java EE applications
A Java EE application is delivered in an Enterprise Archive (EAR) file An EAR file contains Java EE modules and deployment descriptors
• •
EJB module
An EJB module is used to assemble one or more EJBs into a single deployable unit An EJB module is stored in a standard Java archive (JAR) file • Directory structure:
Creating directory structure with Maven
• Execute a command:
mvn archetype:create -DgroupId=lv.webkursi.ejb -DartifactId =java-eim-demo-ejb-jboss -DarchetypeArtifactId = maven-archetype-j2ee-simple
• Develop EJBs in
/ejbs/
folder
•
References
Enterprise JavaBeans Technology
http://java.sun.com/products/ejb/
• The history and goals of EJB architecture
http://www.ibm.com/developerworks/java/library /j-what-are-ejbs/part1/
• EJB 3.0 in a nutshell
http://www.javaworld.com/javaworld/jw-08 2004/jw-0809-ejb.html
•
References
Spring Vs. EJB 3.0
http://www.onjava.com/pub/a/onjava/2005/06/29/spring ejb3.html
• Getting Started with EJB 3.0
http://www.devx.com/Java/Article/30045/0/page/1