Ch10 EJB Slides

Download Report

Transcript Ch10 EJB Slides

Chapter 10 EJB
• Concepts of EJB
• Three Components in Creating an EJB
• Starting/Stopping J2EE Server and Deployment Tool
• Installation and Configuration of J2EE
• Concept of Deployment
• Steps in Developing an EJB Applications
• A simple Example
• Entity Beans and Session Beans
• Example of an Entity Bean Application
• Example of an Session Bean Application
• In-class Exercises
Concepts of EJB
• What is an EJB?
– Part of J2EE (Java 2 Enterprise Edition)
– Three-tier or multi-tier client/server applications
– Distributed applications
• Why EJB?
– Components-based architecture makes application
development easier and faster
– Platform independent
– Developers concentrate on business logic rather than
presentation
– GUI deployment tools make packaging and deploying an EJB
application easier and faster
– Integrated Java technology
– Hidden-details in Client/server communications and JDBC
connectivity
Concepts of EJB (continue)
• Multi-tiered Applications
Concepts of EJB (continue)
• J2EE server communications with other tiers
Concepts of EJB (continue)
• Closer look of Web tier
Concepts of EJB (continue)
• Closer look of Business and EIS (Enterprise Info Sys) tier
Concepts of EJB (continue)
• J2EE Server and Containers
Three Components in Creating an EJB
• Coding the remote interface
– define the business methods that a client may call, i.e, retrieve
a message or compute data
– name convention of the code: ProgRemote.java
• Coding the home interface
– define the methods that allow a client to create, find, or remove
an EJB
– name convention of the code: ProHome.java
• Coding the bean
– implement the methods of the remote interface. The methods
will be called by the container-generated code after the
deployment
– name convention of the code: ProEJB.java or ProBean.java
• Note: to use the EJB, one must create a client code
Installation and Configuration of J2EE
•
•
•
•
Download J2EE from http://java.sun.com
J2EE requires J2SDK to be installed
Follow the instruction to install J2EE
Setup environment variables (for example)
– set JAVA_HOME=c:\j2sdk1.4.1
– set J2EE_HOME=c:\j2sdkee1.3.1
• Other links
– J2EE API: http://java.sun.com/api.html
– J2EE tutorial:
http://java.sun.com/search/index.jsp?tab=jsc&docs=tutorial&w
ord=EJB
– general topic tutorials: http://java.sun.com/docs/books/tutorial
Starting/Stopping J2EE Server and Deployment
Tool
• To start the server, click on j2ee.bat in the
J2EE_HOME\bin directory, or type the following
command in command console:
start %J2EE_HOME%\bin\j2ee -verbose
• To start the deployment tool, click on deploytool.bat in
the J2EE_HOME\bin directory, or type the following
command in command console:
start %J2EE_HOME%\bin\deploytool
• To stop the server, use the following command
%J2EE_HOME%\bin\j2ee -stop
Application Deployment Tool in J2EE
• deploytool provides GUI for assembling, verifying,
packaging, configuring, and deploying J2EE applications
• It manages your development and production
environments
• It creates a JAR file, ProEJB.jar, for the EJB, and an
application file, Pro.ear, for development in the EJB
container
• It will also create additional files needed for
communications with the clients, and a deployment
descriptor
Steps in Developing an EJB Applications
• Step 1: Create the EJB
– code the remote interface (ProRemote.java)
– code the home interface (ProHome.java)
– code the bean (ProgEJB.java)
– compile all three components using the following
command:
javac -classpath .;%J2EE_HOME%\lib\j2ee.jar Pro*.java
• Step 2: Start J2EE Server (see previous slide)
• Step 3: Deploy the EJB Using deploytool (see previous
slide)
• Step 4: Create and compile a client code
• Step 5: Execute the client code
A simple Example
• (p. 389) HelloRemote.java - define the business method
as remote interface to retrieve hello message
• (p. 390) HelloHome.java - define the method that allow a
client to create, find, or remove an EJB
• (p. 391) HelloEJB.java - implement the methods of the
remote interface as SessionBean, more specifically, return
the hello message
• To compile:
javac -classpath .;%J2EE_HOME%\lib\j2ee.jar Hello*.java
• To deploy the Hello application, follow the steps on p. 8
of newupdatech10.doc
A simple Example (continue)
• (p. 393) HelloClient.java - a client application using the
EJB to display the message
• To execute the client application:
- compile the HelloClient.java
javac -classpath .;%J2EE_HOME%\lib\j2ee.jar HelloClient.java
- execute the application:
java -classpath .;%J2EE_HOME%\lib\j2ee.jar;HelloClient.jar
HelloClient
Entity Beans and Session Beans
• Entity beans model business objects such as customers,
orders, and prodcuts
• Entity beans have a persistent representation, usually in a
database; J2EE server uses Cloudscape database
• Session beans perform operations on the business objects
such as place an order, or reserve a flight
• A session bean presents a client in the J2EE server
• The client invokes the session bean’s methods to access an
application deployed in the server
• Session beans are not persistent.
• Session beans can be stateless or stateful
– a stateful bean saves information so it can interact with the client
– a stateless bean requires no continuing interaction with the client
Entity Beans
• Entity beans model business objects such as
customers, orders, and products
• Entity beans have a persistent representation, usually
in a database; J2EE server uses Cloudscape database
• Entity beans can be Container-Managed Persistence
(CMP) or Bean-Managed Persistence (BMP)
• In CMP, the persistence of a bean’s state to the
underlying database is automatically managed by
the container
• In MBP, the programmers create code in the bean to
manage the persistence
Entity Beans (continue)
• As in developing a session bean, we need to write the Home
interface, the Remote interface, and the implementation of
the entity bean
• As in developing a session bean, we need also to write the
client code as a particular application to use the entity bean
• In the Remote interface we extend EJBObject and declare
the get() and set() methods as the business methods (see
CustomerRemote.java)
• In the Home interface, we extend EJBHome and declare the
required Create() method, the required
findByPrimaryKey(), and other finder methods (see
CustomerHome.java)
Entity Beans (continue)
• In the implementation we implement EntityBean,
the methods declared in the interfaces, and other
methods (see CustomerEJB.java in p. 397)
• After we deploy the entity bean, the find() methods
become as SQL queries generated by the container
automatically. We may modify them if it’s
necessary
• In the developing the client applications, multiple
clients can access an entity bean, the persistence and
synchronization are automatically managed
Entity Beans (continue)
• In a client code, it looks up the bean, may create
database table, call the finder methods, or get()
and set() methods to do the transactions and
manipulations of the data stored in the database
(see CustomerClient.java)
• Steps in deployment of the entity bean (see p. 18
in newupdatech10.doc)
• Steps in deployment of the client (see p. 20 in
newupdatech10.doc)
• Steps in the execution (see p. 21 in
newupdatech10.doc)
Example of an Entity Bean Application
• (p. 395) CustimerRemot.java - remote interface to define
the business methods for customer EJB
• (p. 396) CustomerHome.java - define the method that
allow a client to create and find a customer
• (p. 397) CustomerEJB.java - entity bean representing a
customer (See p. 16 in newupdatech10.doc)
• (p. 402) CustomerClient.java - client code to create
customers and test out the find method (See p. 21 in
newupdatech10.doc)
• Deployment steps (see p. 18-21 in newupdatech10.doc)
• Note: Steps may be vary depending upon the different
versions of J2EE
Example of an Session Bean Application
• A session bean may be stateful in which it holds the
client state across the method calls
• A session bean may be deployed to the entity bean, so
the data in the entity bean can be used
• Agent bean example has these features above
• (p. 404) AgentRemote.java - define the business method
for agent EJB
• (p. 404) AgentHome.java - define the methode to create
an agent bean
• (p. 405) AgentEJB.java - a stateful entity bean to place
an order
Example of an Session Bean Application
(continue)
• (p. 408/p. 29) SalesClient.java - client code to use
agent bean to retrieve the required customer names
• Deployment steps (see p. 28-29 in
newupdatch10.doc)
Using EJB in Servlet and JSP Clients
• For a Web application, we can include the web components
from J2EE application, so the clients can access EJB from
the web and dynamically update the web
• The client can be a servlet client, or JSP client.
• As a servlet client, we can write the HTML file to invoke
the J2EE application in which it will invoke the packaged
servlet
• As a JSP client, we can write a JSP code that focuses on the
presentation of the form shown in the client’s web, then we
can write a Java program to focus on the looking up the
bean and the business methods
• In either way, we package the servlet or JSP in J2EE, then
we deploy the application using deployment tools
Using EJB in Servlet and JSP
Clients(continue)
• Examples to develop a servlet client to access the Agent
Bean:
– Develop a HTML that calls the J2EE application “SalesAlias”
that invokes a sales servlet, and passes Customer ID and
Salesperson ID to the servlet using the POST method (see
updatch10.doc – SalesServlet.html)
– Develop a servlet program that connects with the Agent bean,
updates the client’s web, displays a form, creates object of Agent
bean with the table having Item number, Quantity, and Price
entered by the client, and displays the records in the table to the
client’s web (see updatech10.doc – SalesServlet.java)
– Compile the servlet program using the command:
javac -classpath .;c:\j2sdkee1.3.1\lib\j2ee.jar SalesServlet.java
– Start J2EE server, Cloudscape server, and deploytool
Using EJB in Servlet and JSP
Clients(continue)
– Package the servlet (see newupdatech10.doc – package the
servlet)
– Deploy the application (see newupdatech10.doc – the next
page)
– Execute the application
http://localhost:8000/SalesContextRoot/SalesServlet.html
(The HTML will invoke the EJB application “SalesAlias” after
user click on the Submit Query button)
Using EJB in Servlet and JSP
Clients(continue)
• Examples to develop a JSP client to access the
Customer Bean (CustomerEJB):
– Develop a Java program that looks up the Customer
bean and perform the business logics (set() and get()
methods, see newupdatech10.doc – CustomerBean.java)
– Compile the Java code using the command:
javac –classpath
.;%j2ee_home%\bin\j2ee.jar;CustomerClient.jar
CustomerBean.java
Using EJB in Servlet and JSP
Clients(continue)
– Develop a JSP program that will present a form in the client’s
web, call the methods defined in the Java code, and interact
between client and the server using the EJB (see
newupdatech10.doc – Customer.jsp)
– Start J2EE server, Cloudscape server, and deploytool
– Package the JSP (see newupdatech10.doc – Package the JSP and
JavaBean)
– Deploy the application (see newupdatech10.doc – Deploy the
Application)
– Execute
Open a Web browser, and type:
http://localhost:8000/CustomerContextRoot/Customer.jsp
In-class Exercises
- Test examples HelloXXX, CustomerXXX,
AgentXXX, and SalesXXX.
- Try-It-Yourself 3, 5, 9 and 11