Lekcija10 - 01_EJB_Intro

cavalcadejewelSoftware and s/w Development

Nov 18, 2013 (3 years and 9 months ago)

88 views

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


E
merged 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


T
o 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 EJB
s
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


EJB
s

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
extend
s








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