Download PPT - Fullerton College Staff Web Pages

Document related concepts
no text concepts found
Transcript
Brad Rippe
Fullerton College
What you need to get started?





JDK 1.3 standard for compilation
J2EE - SDK1.2.1
App Server - An EJB Container/Web
Container
Example uses Jboss 2.4 with Tomcat
3.2.3
A good editor
What is a EJB?





JavaBean?
Java Classes?
GUI?
Are EJBs part of the J2EE?
What is J2EE?
What is a EJB?


Enterprise JavaBeans (EJBs) are
distributed object that are hosted in
Enterprise JavaBean Containers and
provide remote services for clients
distributed throughout the network.
This components encapsulate business
logic
Why EJB?






(Distributed Computing)
Enterprise Applications
Development Costs
Deployment Costs
Maintenance Costs
Service More Clients
More Bang for the Buck!
J2EE Architecture
This is an illustration of the architecture set forth by
Sun. See http://java.sun.com/blueprints/
Containers and Services


EJB Containers provide additional
services for the (EJBs).
Life-Cycle Management, Transaction
Management, Security, Persistence,
Resource Management.
EJB Container





Similar to the Web Container
EJBs require a container to function
The contain isolates the EJB from direct
access from client application.
Manages remote access to EJBs.
Provided by an Application Server.
JBoss, WebLogic, JRun, Borland App
Server, etc.
EJB Advantages

Productivity



Infrastructure



Container services are provided automatically.
Developer can focus on the business logic without
Container management is inherently robust.
Supports scalability
Portability

EJB Spec provides a well-defined contract for EJB
Containers
How does the EJB get the
services?

EJBs can access container services
through one of three ways

Callback methods
The EJBContext interface

Java Naming and Directory Interface

CallBack Methods

Each EJB is required to implement a subtype
of EnterpriseBean interface which defines
callback methods.



Each callback method provides a way for the
container to notify the EJB about an event in the
bean’s lifecycle, i.e. removing a bean from
memory.
The callback methods give the EJB a chance to do
some internal housework before or after an event
occurs.
These are the bean’s event handlers.
EJBContext


Every EJB obtains an EJBContext
object which is a reference directly to
the EJB Container.
The EJBContext interface provides
methods for interacting with the
container so that the EJB can request
information about its environment.
Java Naming and Directory
Interface (JNDI)



JNDI is the standard extension to the Java
platform for accessing naming systems like
LDAP, NetWare, NDS, file systems.
Every EJB automatically has access to a
special naming system called the
Environmental Naming Context (ENC).
The ENC is managed by the container.

It allows an EJB to access resources like JDBC
connection , other EJBs, and its own properties.
Roles of Application Builders

Bean Provider


Assembler


an application developer and, often, a domain
expert – builds reusable components without
focusing on the framework.
Combines finished EJBs into modules and
combines those and other J2EE building blocks
into applications, making container neutraldecisions.
Deployer

Deploys J2EE applications in a specific
environment, and make container-specific
decisions.
Two Main Types of Beans

Session Beans

Stateless


Stateful


Common Shopping cart component
Entity Beans



calculating sales tax, or processing and order
CMP (Container-Managed Persistence)
BMP (Bean-Managed Persistence)
Message-Driven Beans (Introduced in 2.0)

This is a JMS bean. Designed for sending and
receiving JMS messages.
Creating EJBs



All ejbs implement a subtype of
EnterpriseBean. Either SessionBean,
EntityBean, or MessageDrivenBean.
Each of the subInterfaces declares callback
methods for the container.
To create an EJB a developer provides:

A home interface


A remote interface


defines the life-cycle methods of the bean
defines the business methods of the bean class.
A bean class

business logic, the meat is here
Conceptual Model
Client
Application Server
EJB Container
Home
Bean Class
Remote
Home
Remote
Bean Class
Home Interface




Extends javax.ejb.EJBHome
This interface declares create and find
methods.
EJB Container implements this interface
Clients use JNDI to locate the vendors
home class.
Remote Interface





Extends javax.ejb.EJBObject
Client view and get access to the EJB through
the bean’s remote interface.
Methods a client can call are declared here.
The actually implementation of those
business methods is located in the bean
class.
Gives a client a handle to the EJB
How the do interfaces work?


The container creates a class that
implements the Home interface and
makes it available to JNDI.
The container creates a class that
implements the Remote interface which
acts like a middleman between the
bean and the client.
Bean Class




Implements javax.ejb.EntityBean if it is
an EntityBean
Implements javax.ejb.SessionBean if it
is an SessionBean
This class defines the methods declared
in the Home and Remote interfaces.
Defines finder, create and business
methods of the EJB.
Enity Beans versus Session
Beans

Entity Beans






Persistent
Part of permanent storage
Should communicate with Session Beans
Should not communicate with clients
Read and write access to the data store
Session Beans




Not persistent
Does not survive server crash
Can access the database for queries
Communicates with client via interfaces
Session Bean





Session Beans should be used for short requests
that can be satisfied with one method.
Session Beans require low resource costs
Easy for the container to manage
Promotes fast response back to the client
Can be stateful or stateless



Client receive only one stateful bean for service
Clients share stateless beans
Two type of transaction modes


CMT – Container Managed Transaction
BMT – Bean Managed Transaction
Entity Bean






Has a direct relation to database row.
Database data types are converted into java data
types and encapsulated into the Entity Bean.
Entity beans must have a defined primary key data
type or compound object as its primary key.
Require more overhead to maintain state between
the database and the EJB object.
Entity bean have persistent data.
Persistence can be one of two persistence modes:
 CMP – Container-Managed Persistence
 BMP – Bean-Managed Persistence
Scenario 1 – Session Bean
Example
Client
Session Bean
Session Bean
Data Store
Scenario 2 – Entity Bean
Example
Session Bean
Client
Entity Bean
Data Store
Entity Bean
Session Bean
Building a Session Bean


Example uses one Session Bean, two
different clients to access the bean’s
business methods
Business method – calculateStockPrice(
String ticker, int numShares )

Calculates the price of stock for four different
companies.
Where to begin?

First, download Jboss – http://www.jboss.org
or some other app server.



Second, unzip the archive into the directory
where it will be located permanently on your
server.


App Server must support EJBs.
Version integrated with Tomcat is preferred!
I chose a directory like “e:\appServer\”
Third, on to the code…
StockBalanceBean Example







Requires a home interface
Requires a remote interface
Requires the bean class
Requires the Deployment Descriptor
Some packaging?
A client or two
Deploy
StockBalanceBean Home
Interface
package edu.fullcoll.exampleEJB;
import java.rmi.RemoteException;
public interface StockBalanceHome
extends EJBHome {
StockBalance create() throws
CreateException,
EJBException,
RemoteException;
}
StockBalanceHome Home
Interface

Provides lifecycle methods for creating,
destorying and locating EJBs


Separate from the remote interface
because the home interface is not
associated with one instance of an EJB
Home interface extend
javax.ejb.EJBHome interface
StockBalance Remote
Interface
package edu.fullcoll.exampleEJB;
import java.rmi.RemoteException;
public interface StockBalance extends EJBObject
{
double calculateStockPrice(String ticker,
int numShares)
throws
RemoteException,
EJBException;
}
StockBalance Remote
Interface




Declares the business methods available in
EJB class.
The this is the clients way of communicating
with the EJB.
The EJB container creates an object that
implements this remote interface and returns
it to the client.
Can be associated with one instance of an
EJB.
StockBalanceBean – Bean
Class
public class StockBalanceBean implements
SessionBean {
public double calculateStockPrice(String
ticker, int numShares){
if( ticker != null) {
ticker = ticker.toUpperCase();
if(ticker.equals( "AAPL" )) {
return numShares * 20.42;
} else if(ticker.equals( "MSFT" )) {
return numShares * 64.84;
} else if(ticker.equals( "YHOO" )) {
return numShares * 16.70;
StockBalanceBean

Implements SessionBean interface
public void ejbActivate() { }
public void ejbPassivate() { }
public void
setSessionContext(SessionContext ctx)
{}
public void ejbRemove() {}
public void ejbCreate() {}
EJBs and RMI



The remote and home interfaces are
types of Java RMI remote interfaces.
This means that the EJB, even though
instantiated in the EJB container, can
have its methods invoked as a result of
a request from an outside application.
The RMI stub and skeleton hide the
communication specifics from the client.
EJBs and RMI
Client
Network
App Server
Skeleton
Stub
EJB
Object
Final Steps




Home, Remote and Bean class are
created.
Create a deployment descriptor
Package the EJBs
Deploy the beans to the App Server
ejb-jar.xml






Must be stored in the jar’s META-INF
directory.
XML document.
Describes the EJB setup, transaction mode,
JNDI name, security, and persistence.
Can be created by hand, not recommended.
J2EE deploytool
Another GUI tool to generate the xml…
Recommended…
ejb-jar.xml

Let’s take a look…
Packaging the EJBs




Again you can use a tool like Together’s
Control Center or the deploytool.
Or
Create a jar file with your ejb classes in it and
the deployment descriptor in the META-INF
directory. This file will have a .jar extension.
Name the jar an arbitrary name,
StockBeanEJBs.jar
Creating a client - local

Let’s take a look…
Creating a client - Remote

Let’s take a look…
How does a client lookup a
bean?

A client needs to know two things:


The JNDI name of the Bean
The vendor-specific syntax for getting the
InitialContext.
Deployment


To deploy the bean in jboss, simply
copy the EJB jar to the “deploy”
directory.
2.4 handles hot deploy, so if you update
your EJBs you can copy the new jar into
the “deploy” directory and the EJBs will
be updated…
Info about client compilation






Your client code must be compiled with the
following jars.
ejb.jar – standard javax.ejb.*
jaas.jar – Java security classes
jbosssx-client.jar – JBossSX security classes
jboss-client.jar – EJB container proxy and
stub classes
jnp-client.jar – jboss JNDI provider client
classes
Entity Beans





Provides object representation of data.
One entity bean can represent data for
multiple clients.
Represents a row in the database.
Model business objects, nouns, Person,
Seat, Room, etc.
Container handles persistence,
transactions, and access control
Two types of Entity Beans

Bean-Managed Persistence (BMP)


Develop provides all of the code for managing
persistence between the object and the database.
The container will notify the bean when its
necessary to update or read from the database.
Container-Managed Persistence (CMP)

The EJB Container handles the relationship
between the bean and the database. Bean
developer can focus on the data and the business
process.
Using Entity Beans

CMP



Recommended for beginners
Handles simple relationships with the database.
(one row)
BMP



Used for more complex relationships.
Beans that represent multiple rows or table joins.
This code is implemented by the developer
Entity Bean Requirements





Home Interface
Remote Interface
Bean class – implements EntityBean
Primary Key – can be a java class or
primitive type. Points to a unique record
in the database.
All Entity beans must have a primary
key that is serializable.
Creation




The entity bean’s home interface declares a
method create(). The bean class must
define methods ejbCreate() and
ejbPostCreate().
ejbCreate() and ejbPostCreate() must
have the same parameters as create()
from the home interface.
create() Inserts a row into the database.
ejbPostCreate()- provides a method for
accessing the EJB’s remote method (this).
Callback Methods









setEntityContext()
unsetEntityContext()
ejbLoad()
ejbStore()
ejbActivate()
ejbPassivate()
ejbRemove()
CMP - the container decides when to call these
methods and their implementation.
BMP - the container decides when to call these
methods and the developer provide the
implementation.
Find Methods





Find methods in the Home interface are used to query
the EJB server for specific entity beans.
CMP the find methods are implemented by the
container.
There isn’t any code in the bean class.
Clients can call find methods to obtain a reference to a
particular bean’s remote interface.
Can return a single reference or an Enumeration or
Collection of references.
FCStudentBean brad = (FCStudentBean) home.findStudent(00001149);
Entity Beans Example - Home
package edu.fullcoll.schedule;
import java.rmi.RemoteException;
Import javax.ejb.EJBHome;
public interface FCStudentHome extends EJBHome {
public FCStudentRemote create(int pidm) throws
CreateException,
RemoteException;
public FCStudentRemote findByPrimaryKey(int pk)
throws FinderException,
RemoteException;
}
Entity Beans Example Remote
package edu.fullcoll.schedule;
import java.rmi.RemoteException;
Import javax.ejb.EJBObject;
public interface FCStudentRemote extends
EJBObject {
public String getName() throws
RemoteException;
public void setName(String n) throws
RemoteException;
}
Entity Beans Example – Bean
Class
public class FCStudent implements EntityBeans
{
public int pidm;
public String name;
public int ejbCreate(int pidm) {
this.pidm = pidm;
return null;
}
public String getName() { return name; }
public void setName(String n) { name = n; }
// all callback methods must be defined, but blank
for CMP
}
J2EE






Comprised of many different
technologies
JSP/Servlets
JDBC
JNDI
JTA
JMS, jetc, jetc
Summary



Similar to other technologies, EJBs have there
place in software development.
EJBs are not a solution for all development
problems. They are meant for transactional,
secure business applications, reservation
systems, student registration, online
purchasing.
They are highly scalable components meant
for use in complex, mission-critical
applications.
Resources






Jboss – http://www.jboss.org
Tomcat – http://jakarta.apache.org/tomcat
J2EE Web Site – http://java.sun.com/j2ee
J2EE Tutorial –
http://java.sun.com/j2ee/tutorial
EJB Spec – http://java.sun.com/products/ejb
Lecture available at
http://staffwww.fullcoll.edu/brippe/cis226
Resources



J2EE Developer’s Guide –
http://java.sun.com/j2ee/j2sdkee/techd
ocs/guides/ejb/html/DevGuideTOC.html
J2EE Tutorial –
http://java.sun.com/j2ee/tutorial/1_3fcs/index.html
Server Side Programming –
http://www.theserverside.com
The End!

Thanks for you time!