J2EE

J2EE – Building
Component-based Enterprise
Web Applications
05/09/2002
Paulo Merson
Copyright 2002 © Paulo Merson
1
Agenda
1.
2.
Application servers
What is J2EE?



3.
4.
Main component types
Application Scenarios
J2EE APIs and Services
EJB – a closer look
Examples
Copyright 2002 © Paulo Merson
2
1. Application Servers

In the beginning, there was darkness and
cold. Then, …
mainframe
terminals
terminals
Centralized, non-distributed
Copyright 2002 © Paulo Merson
3
Application Servers

In the 90’s, systems should be clientserver
Copyright 2002 © Paulo Merson
4
Application Servers
 Today,
enterprise applications use
the multi-tier model
Copyright 2002 © Paulo Merson
5
Application Servers
“Multi-tier applications” have several
independent components
 An application server provides the
infrastructure and services to run such
applications

Copyright 2002 © Paulo Merson
6
Application Servers

Application server products can be
separated into 3 categories:



J2EE-based solutions
Non-J2EE solutions (PHP, ColdFusion, Perl,
etc.)
And the Microsoft solution (ASP/COM and
now .NET with ASP.NET, VB.NET, C#, etc.)
Copyright 2002 © Paulo Merson
7
J2EE Application Servers

Major J2EE products:







BEA WebLogic
IBM WebSphere
Sun iPlanet Application Server
Oracle 9iAS
HP/Bluestone Total-e-Server
Borland AppServer
Jboss (free open source)
Copyright 2002 © Paulo Merson
8
Web Server and Application Server
App Server 1
Internet Browser
Web Server
(HTTP Server)
HTTP(S)
App Server 2
Copyright 2002 © Paulo Merson
9
2. What is J2EE?
It is a public specification that
embodies several technologies
 Current version is 1.3
 J2EE defines a model for developing
multi-tier, web based, enterprise
applications with distributed
components

Copyright 2002 © Paulo Merson
10
J2EE Benefits
High availability
 Scalability
 Integration with existing systems
 Freedom to choose vendors of
application servers, tools, components
 Multi-platform

Copyright 2002 © Paulo Merson
11
J2EE Benefits


Flexibility of scenarios and support to several
types of clients
Programming productivity:




Services allow developer to focus on business
Component development facilitates maintenance
and reuse
Enables deploy-time behaviors
Supports division of labor
Copyright 2002 © Paulo Merson
12
J2EE Benefits
Don’t forget to
say that Java is
cool!
Copyright 2002 © Paulo Merson
13
Main technologies
JavaServer Pages (JSP)
 Servlet
 Enterprise JavaBeans (EJB)


JSPs, servlets and EJBs are application
components
Copyright 2002 © Paulo Merson
14
JSP





Used for web pages with dynamic content
Processes HTTP requests (non-blocking
call-and-return)
Accepts HTML tags, special JSP tags, and
scriptlets of Java code
Separates static content from presentation
logic
Can be created by web designer using
HTML tools
Copyright 2002 © Paulo Merson
15
Servlet





Used for web pages with dynamic content
Processes HTTP requests (non-blocking calland-return)
Written in Java; uses print statements to
render HTML
Loaded into memory once and then called
many times
Provides APIs for session management
Copyright 2002 © Paulo Merson
16
EJB





EJBs are distributed components used to
implement business logic (no UI)
Developer concentrates on business logic
Availability, scalability, security,
interoperability and integrability handled by
the J2EE server
Client of EJBs can be JSPs, servlets, other
EJBs and external aplications
Clients see interfaces
Copyright 2002 © Paulo Merson
17
J2EE Multi-tier Model
Copyright 2002 © Paulo Merson
18
J2EE Application Scenarios

Multi-tier typical application
Copyright 2002 © Paulo Merson
19
J2EE Application Scenarios

Stand-alone client
Copyright 2002 © Paulo Merson
20
J2EE Application Scenarios

Web-centric application
Copyright 2002 © Paulo Merson
21
J2EE Application Scenarios

Business-to-business
Copyright 2002 © Paulo Merson
22
J2EE Services and APIs

Java Message Service (JMS)



Implicit invocation
Communication is loosely coupled,
reliable and asynchronous
Supports 2 models:


point-to-point
publish/subscribe
Copyright 2002 © Paulo Merson
23
JMS

Point-to-point

Destination is “queue”
Copyright 2002 © Paulo Merson
24
JMS

Publish-subscribe

Destination is “topic”
Copyright 2002 © Paulo Merson
25
J2EE Services and APIs

JNDI - Naming and directory services



Applications use JNDI to locate objects,
such as environment entries, EJBs,
datasources, message queues
JNDI is implementation independent
Underlying implementation varies: LDAP,
DNS, DBMS, etc.
Copyright 2002 © Paulo Merson
26
J2EE Services and APIs

Transaction service:



Controls transactions automatically
You can demarcate transactions explicitly
Or you can specify relationships between
methods that make up a single
transaction
Copyright 2002 © Paulo Merson
27
J2EE Services and APIs

Security




Java Authentication and Authorization Service
(JAAS) is the new (J2EE 1.3) standard for J2EE
security
Authentication via userid/password or digital
certificates
Role-based authorization limits access of users to
resources (URLs, EJB methods)
Embedded security realm
Copyright 2002 © Paulo Merson
28
J2EE Services and APIs

J2EE Connector Architecture




Integration to non-J2EE systems, such as
mainframes and ERPs.
Standard API to access different EIS
Vendors implement EIS-specific resource
adapters
Support to Corba clients
Copyright 2002 © Paulo Merson
29
J2EE Services and APIs
JDBC
 JavaMail
 Java API for XML Parsing (JAXP)
 Web services APIs

Copyright 2002 © Paulo Merson
30
3. EJB – a closer look
Copyright 2002 © Paulo Merson
31
Home Interface
Methods to create, remove or locate
EJB objects
 The home interface implementation is
the home object (generated)
 The home object is a factory

Copyright 2002 © Paulo Merson
32
Remote Interface
Business methods available to clients
 The remote interface implementation
is the EJB object (generated)
 The EJB object acts as a proxy to the
EJB instance

Copyright 2002 © Paulo Merson
33
Copyright 2002 © Paulo Merson
34
EJB – The Big Picture
Copyright 2002 © Paulo Merson
35
EJB at runtime
Client can be local or remote
Copyright 2002 © Paulo Merson
36
EJB at runtime
Copyright 2002 © Paulo Merson
37
Types of EJB
EJB Taxonomy
EnterpriseBean
SessionBean
EntityBean
Stateful
BMP
Stateless
CMP
Copyright 2002 © Paulo Merson
MessageDrivenBean
New!
38
Session Bean

Stateful session bean:



Retains conversational state (data) on
behalf of an individual client
If state changed during this invocation,
the same state will be available upon the
following invocation
Example: shopping cart
Copyright 2002 © Paulo Merson
39
Session Bean

Stateless session bean:




Contains no user-specific data
Business process that provides a generic
service
Container can pool stateless beans
Example: shopping catalog
Copyright 2002 © Paulo Merson
40
Entity Bean






Represents business data stored in a
database  persistent object
Underlying data is normally one row of a
table
A primary key uniquely identifies each bean
instance
Allows shared access from multiple clients
Can live past the duration of client’s session
Example: shopping order
Copyright 2002 © Paulo Merson
41
Entity Bean


Bean-managed persistence (BMP): bean
developer writes JDBC code to access the
database; allows better control for the
developer
Container-managed persistence (CMP):
container generates all JDBC code to access
the database; developer has less code to
write, but also less control
Copyright 2002 © Paulo Merson
42
Message-Driven Bean
Message consumer for a JMS queue or
topic
 Benefits from EJB container services
that are not available to standard JMS
consumers
 Has no home or remote interface
 Example: order processing – stock
info

Copyright 2002 © Paulo Merson
43
4. Examples
JSP example
 Servlet example
 EJB example

Copyright 2002 © Paulo Merson
44
JSP example
Copyright 2002 © Paulo Merson
45
JSP example
<%@ page import="hello.Greeting" %>
<jsp:useBean id="mybean" scope="page"
class="hello.Greeting"/>
<jsp:setProperty name="mybean" property="*" />
<html>
<head><title>Hello, User</title></head>
<body bgcolor="#ffffff" background="background.gif">
<%@ include file="dukebanner.html" %>
<table border="0" width="700">
<tr>
<td width="150"> &nbsp; </td>
<td width="550">
<h1>My name is Duke. What's yours?</h1>
</td>
</tr>
Copyright 2002 © Paulo Merson
46
JSP example
<tr> <td width="150" &nbsp; </td> <td width="550">
<form method="get">
<input type="text" name="username" size="25"> <br>
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</td> </tr>
</form> </table>
<%
if (request.getParameter("username") != null) {
%>
<%@ include file="response.jsp" %>
<%
}
%>
</body>
</html>
Copyright 2002 © Paulo Merson
47
Servlet example
public class HelloWorldServlet extends HttpServlet {
public void service(HttpServletRequest req,
HttpServletResponse res) throws IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<html><head><title>Hello
World Servlet</title></head>");
out.println("<body><h1>Hello
World!</h1></body></html>");
}
}
Copyright 2002 © Paulo Merson
48
EJB Example
// Shopping Cart example
// Home interface
public interface CartHome extends EJBHome {
Cart create(String person)
throws RemoteException, CreateException;
Cart create(String person, String id)
throws RemoteException, CreateException;
}
Copyright 2002 © Paulo Merson
49
EJB Example
// Remote interface
public interface Cart extends EJBObject {
public void addBook(String title)
throws RemoteException;
public void removeBook(String title)
throws BookException, RemoteException;
public Vector getContents()
throws RemoteException;
}
Copyright 2002 © Paulo Merson
50
EJB Example
// Enterprise bean class
public class CartEJB implements SessionBean {
String customerName, customerId;
Vector contents;
private SessionContext sc;
public void ejbCreate(String person) throws CreateException {
if (person == null) {
throw new CreateException("Null person not allowed.");
}
else {
customerName = person;
}
customerId = "0";
contents = new Vector();
}
Copyright 2002 © Paulo Merson
51
EJB Example
public void ejbCreate(String person, String id)
throws CreateException {
if (person == null) {
throw new CreateException("Null person not allowed.");
}
else {
customerName = person;
}
IdVerifier idChecker = new IdVerifier();
if (idChecker.validate(id)) {
customerId = id;
}
else {
throw new CreateException("Invalid id: " + id);
}
contents = new Vector();
}
Copyright 2002 © Paulo Merson
52
EJB Example
public void addBook(String title) {
contents. addElement(title);
}
public void removeBook(String title) throws BookException {
boolean result = contents.removeElement(title);
if (result == false) {
throw new BookException(title + " not in cart.");
}
}
public Vector getContents() {
return contents;
}
. . .
}
Copyright 2002 © Paulo Merson
53
EJB Example
// EJB client (stand-alone application)
public class CartClient {
public static void main(String[] args) {
try {
CartHome home = (CartHome)initial.lookup("MyCart");
Cart shoppingCart = home.create("Duke DeEarl", "123");
shoppingCart.addBook("The Martian Chronicles");
shoppingCart.addBook("2001 A Space Odyssey");
shoppingCart.remove();
} catch (BookException ex) {
System.err.println("Caught a BookException: "
+ ex.getMessage());
} catch (Exception ex) {
System.err.println("Caught an unexpected exception!");
}
}
}
Copyright 2002 © Paulo Merson
54
Questions
Copyright 2002 © Paulo Merson
55
Sources & Resources




Java 2 Platform Enterprise Edition
Specification, v1.3
Designing Enterprise Applications with the
Java 2, Enterprise Edition. Nicholas Kassen
and the Enterprise Team
Does the App Server Maket Still Exist? JeanChristophe Cimetiere
The State of The J2EE Application Server
Market. Floyd Marinescu
Copyright 2002 © Paulo Merson
56
Sources & Resources
The J2EE Tutorial. Sun Microsystems
 IBM WebSphere Application Server
manuals
 BEA WebLogic Server manuals
 www.java.sun.com/j2ee
 www.theserverside.com

Copyright 2002 © Paulo Merson
57