1 copyright 2002 © paulo merson j2ee – building component-based enterprise web applications...
Post on 20-Dec-2015
215 views
TRANSCRIPT
Copyright 2002 © Paulo Merson 1
J2EE – Building J2EE – Building Component-based EnterpriseComponent-based Enterprise
Web ApplicationsWeb Applications
05/09/200205/09/2002
Paulo Merson
Copyright 2002 © Paulo Merson 2
Agenda1. Application servers2. What is J2EE?
Main component types Application Scenarios J2EE APIs and Services
3. EJB – a closer look4. Examples
Copyright 2002 © Paulo Merson 3
1. Application Servers In the beginning, there was darkness and
cold. Then, …
Centralized, non-distributed
terminals
mainframe
terminals
Copyright 2002 © Paulo Merson 5
Application Servers
Today, enterprise applications use the multi-tier model
Copyright 2002 © Paulo Merson 6
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 7
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 8
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 9
Web Server and Application Server
Web Server
(HTTP Server)
App Server 1
App Server 2
Internet Browser
HTTP(S)
Copyright 2002 © Paulo Merson 10
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 11
J2EE Benefits
High availability Scalability Integration with existing systems Freedom to choose vendors of
application servers, tools, components Multi-platform
Copyright 2002 © Paulo Merson 12
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 14
Main technologies
JavaServer Pages (JSP) Servlet Enterprise JavaBeans (EJB)
JSPs, servlets and EJBs are application components
Copyright 2002 © Paulo Merson 15
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 16
Servlet Used for web pages with dynamic content Processes HTTP requests (non-blocking call-
and-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 17
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 23
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 26
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 27
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 28
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 29
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 30
J2EE Services and APIs
JDBC JavaMail Java API for XML Parsing (JAXP) Web services APIs
Copyright 2002 © Paulo Merson 32
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 33
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 38
Types of EJB
EJB Taxonomy
Sta te ful
Sta te le ss
SessionBea n
BMP
C MP
EntityBea n M essa geDrivenBea n
Ente rp riseBea n
New!
Copyright 2002 © Paulo Merson 39
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 40
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 41
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 42
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 43
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 46
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"> </td><td width="550"> <h1>My name is Duke. What's yours?</h1></td></tr>
Copyright 2002 © Paulo Merson 47
JSP example<tr> <td width="150" </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 48
Servlet examplepublic 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 49
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 50
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 51
EJB Example// Enterprise bean classpublic 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 52
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 53
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 54
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 56
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? Jean-Christophe Cimetiere
The State of The J2EE Application Server Market. Floyd Marinescu