1 l enterprise computing -- 3-tier and multi-tier applications l enterprise javabeans n ejb features...
TRANSCRIPT
1
Enterprise Computing -- 3-tier and multi-tier applications Enterprise JavaBeans
EJB FeaturesTypes of EJBs
Example – A Currency ConverterPackaging the Session EJBDeploying the BeanRunning the Client
Introduction to Enterprise JavaBeans
CG0165: Advanced Applications Development in Java
Michael Brockway, Sajjad Shami
School of Computing, Engineering & Information Sciences
Northumbria University
2
Introduction to EJBs
References: Tutorial and reference material from the sun web site - Enterprise
Edition pages http://java.sun.com/javaee/5/docs/tutorial/doc/ http://java.sun.com/javaee/5/docs/tutorial/doc/JavaEETutorial.pdf
http://docs.sun.com/app/docs/doc/819-3656/6n5s3qjg2?a=view
The relevant material in the Tutorial is in chapter 1: Overview, chapter 20: Enterprise Beans, and chapter 21: Getting Started with Enterprise Beans
3
Enterprise Computing
Same as distributed computing: computation done by groups of programs communicating over a
network Not necessarily a major corporation, university, government agency
… Small businesses also engage in plenty of distributed computing The architecture of Enterprise applications can be thought
of as consisting of three logical tiers Presentation (Client side, User)
displays data to client Application
provides business logic to Presentation tier holds business components & objects
Data Systems central data storage/ retrieval
4
Three Tiers
Presentation Tier
Application Tier Data Systems Tier/ EIS
Business components
Application 2
Application 1
/Client Backend / backofficeDatabase/ legacy sys
Application 3
Server
5
Multi-tier applications
This architecture generalises: In general an enterprise application involves client-to-server
communication.
Stock controlserver
Inventory DBserver
Goods purchasing system 1
Goods purchasing system n
......
Goods purchasing system 2
Client(s)
= application tier = data systems tier
6
Multi-tier applications
For a rationale, imagine a client who manages an inventory for a chain of shops Has web-based (thin client) interfaces to a number of server-
based applications the chain's own inventory the goods purchasing system for supplier no 1 the goods purchasing system for supplier no 2 .... the goods purchasing system for supplier no n
There is a set of logical rules: one for each inventory item, which causes a certain quantity of the item to be ordered-in (from the appropriate supplier) when stocks fall below a pre-determined threshold.
It would clearly be silly for all this logic to occur in the client Better:
The goods ordering logic is implemented on a server which talks to all the other servers
7
Multi-tier applications
A further development is the Thin Client The clients run web browsers or other very light-weight
software The presentation tier resides in a web server
Web server
Application server
Application server
.
.
.
Application server
communication with clients
Business logic
servlets, JSPs
Client(s): HTTP requests, XHTML
responses
8
Enterprise JavaBeans (EJBs)
(Other) Technologies for implementing business & presentation logic in multi-tier applications: Java Servlets JSPs
Enterprise JavaBeans are a technology for the application server side and provide a component model for building business logic in enterprise Java
applications
References: Deitel, Deitel & Santry Advanced Java 2 HTP, chap 14 Tutorial and reference material on the SUN web site - Enterprise Edition
pages
They provide a component model Component developers write component "building blocks" that implement
business logic Application developers hook up these pre-built components into finished
applications, which may themselves be components.
Not to be Confused with JavaBeans!!!
9
Multi-Tier Apps in Java EE
10
Multi-Tier Apps in Java EE
11
Java EE Components
Java EE applications are made up of components A Java EE component is a self-contained functional
software unit that is assembled into a Java EE application with its related classes and files and that communicates with other
components. The Java EE specification defines the following Java EE
components: Application clients and applets are components that run on the
client. Java Servlet, JavaServer Faces, and JavaServer Pages™
(JSP™) technology components are web components that run on the server.
Enterprise JavaBeans™ (EJB™) components (enterprise beans) are business components that run on the server.
12
Java EE Clients
Web Client two parts: (1) dynamic web pages containing various types of markup
language (HTML, XML, etc), which are generated by web components running in the web tier, and
(2) a web browser, which renders the pages received from the server.
A web client is sometimes called a thin client.
Applets A web page received from the web tier can include an embedded
applet. An applet is a small client application written in the Java
programming language that executes in the Java virtual machine installed in the web browser
13
Java EE Clients …contd.
Application Client
runs on a client machine typically has a graphical user interface (GUI)
a command-line interface is also possible.
directly access enterprise beans running in the business tier
can also open an HTTP connection to establish communication with a servlet running in the web tier
application clients written in languages other than Java can
interact with Java EE 5 servers enabling the Java EE 5 platform to interoperate with legacy systems,
clients, and non-Java languages.
14
EJB Features
EJBs improve distributed transactions By ensuring data integrity across databases and application servers
EJBs utilise Java EE’s distributed transaction features and update data across several databases
To develop an enterprise bean, the following files are required:
• Enterprise bean class: Implements the methods defined in the business interface.
•Business Interfaces: The business interface defines the method implemented by the enterprise bean class.
• Helper classes: Other classes needed by the enterprise bean class, such as exception and utility classes.
15
Packaging of an Enterprise Bean
The three files are packaged into an EJB JAR file, the module that stores the enterprise bean. An EJB JAR file is portable and can be used for different applications.
To assemble a Java EE application, package one or moremodules—such as EJB JAR files—into an EAR file, the archive file that holds the application.
When deploying the EAR file that contains the bean’s EJB JAR file, also deploy the enterprise bean to the Application Server.
Note: An EJB JAR that is not contained in an EAR file can also be deployed
16
Advantages of Enterprise Beans
enterprise beans simplify the development of large, distributed applications:
1) as the EJB container provides system-level services to enterprise beans, the bean developer can concentrate on solving business problems
2) the client developer can focus on the presentation of the client does not have to code the routines that implement business rules or
access databases. result: clients are thinner
3) the application assembler can build new applications from existing beans can run on any compliant Java EE server
17
When to Use Enterprise Beans
the application must be scalable. to accommodate a growing number of users, may need to
distribute an application’s components across multiple machines.
transactions must ensure data integrity Enterprise beans support transactions, the mechanisms that
manage the concurrent access of shared objects
the application will have a variety of clients with only a few lines of code, remote clients can easily locate
enterprise beans. these clients can be thin, various, and numerous.
18
EAR File Structure
19
The EJB Implementation and the EJB Container
The EJB Implementation implements the business logic methods declared in the EJB remote
interface
The EJB Container within the application server manages client interactions invocations from a client first go to the EJB container which then
delegates to the EJB Implementation manages life cycles of its EJBs can create new EJB instances and remove existing ones
20
Types of EJBs
Session EJBs distributed objects which do jobs within the business logic /
application server can manipulate data in a database
...but are not persistent
lost if EJB container crashes two types:
Stateful Stateless
Message-driven EJBs – will not be discussed in detail
21
Sun Java System Application Server Platform Ed. 9
is a fully compliant implementation of the Java EE 5 platform.
In addition to supporting all the APIs the Application Server includes a number of Java EE tool and instructions
for starting and stopping the Application Server, starting the Admin Console, and starting and stopping the Java DB database server.
Admin Console asadmin asant appclient …..
22
A First EJB Example – A Currency Converter
See listings given out with the lecture notes a stateless Session Enterprise Java Bean with remote interface. a very primitive application: has just two business methods
a method to convert dollars to yen a method to convert yen to euro. you will get an opportunity to upgrade this application as a practical
exercise.
Converter.java the remote interface for the Enterprise Bean declares the business methods described above.
23
Converter.java
package converter.ejb;
import java.math.BigDecimal;import javax.ejb.Remote;
@Remotepublic interface Converter {
public BigDecimal dollarToYen(BigDecimal dollars);public BigDecimal yenToEuro(BigDecimal yen);
}
24
Example – Currency Converter
ConverterBean.java the EJB implementation a stateless session EJB for performing currency conversions in effect, this class implements the business methods declared in Converter remote interface
25
ConverterBean.java
package converter.ejb;import java.math.BigDecimal;import javax.ejb.Stateless;@Statelesspublic class ConverterBean implements converter.ejb.Converter {
private BigDecimal euroRate = new BigDecimal("0.0070");private BigDecimal yenRate = new BigDecimal("112.58")
public BigDecimal dollarToYen(BigDecimal dollars) {BigDecimal result = dollars.multiply(yenRate);return result.setScale(2, BigDecimal.ROUND_UP);
}
public BigDecimal yenToEuro(BigDecimal yen) {BigDecimal result = yen.multiply(euroRate);return result.setScale(2, BigDecimal.ROUND_UP);
}}
26
Compiling and Packaging
compile the remote business interface (Converter.java) and the enterprise bean class (ConverterBean.java), and package the compiled classes into an enterprise bean JAR.
1. In a terminal window, go to this directory: <INSTALL>/javaeetutorial5/examples/ejb/converter/
2. Type the following command: ant
27
The Application Client
is a program written in the Java programming language at runtime, the client program executes in a different virtual machine
than the Application Server
The application client in this example requires two JAR files.
The first JAR file is for the Java EE component of the client. This JAR file contains the client’s deployment descriptor and class files
The second JAR file contains all the classes that are required by the client program at runtime. These classes enable the client to access the enterprise beans that are running in the Application Server.
28
ConverterClient.java
package converter.client;
import converter.ejb.Converter;import java.math.BigDecimal;import javax.ejb.EJB;
public class ConverterClient { @EJBprivate static Converter converter;
/** Creates a new instance of Client */public ConverterClient(String[] args) {}
/** * @param args the command line arguments*/public static void main(String[] args) {
ConverterClient client = new ConverterClient(args);
client.doConversion();}
29
ConverterClient.java … contd.
public void doConversion() {try {
BigDecimal param = new BigDecimal("100.00");BigDecimal yenAmount =
converter.dollarToYen(param);
System.out.println("$" + param + " is " + yenAmount + " Yen.");
BigDecimal euroAmount = converter.yenToEuro(yenAmount);
System.out.println(yenAmount + " Yen is " + euroAmount + " Euro.");
System.exit(0);} catch (Exception ex) {System.err.println("Caught an unexpected
exception!");ex.printStackTrace();
}}
}
30
Running the Application Client
ant ant deploy ant run
In the terminal window, the client displays these lines:
...$100.00 is 11531.00 Yen.11531.00 Yen is 81.88 Euro....
That's it! you have deployed the primitive EJB application in the application server, and used a client program to connect to it.
31
Extension
The Converter application is an example provided as part of Sun's Java EE tutorial:
http://java.sun.com/javaee/5/docs/tutorial/doc/
You can make the Converter much more versatile and useful than this – refer to the practical work sheet.
32
The Web Client Interface