Professional Documents
Culture Documents
J2Ee - Building Component-Based Enterprise Web Applications: Paulo Merson
J2Ee - Building Component-Based Enterprise Web Applications: Paulo Merson
05/09/2002
Paulo Merson
Copyright 2002 Paulo Merson
1
Agenda
1.
2.
3. 4.
1. Application Servers
Centralized, non-distributed
Copyright 2002 Paulo Merson
3
Application Servers
Application Servers
Today,
Application Servers
Multi-tier applications have several independent components An application server provides the infrastructure and services to run such applications
Application Servers
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.)
BEA WebLogic IBM WebSphere Sun iPlanet Application Server Oracle 9iAS HP/Bluestone Total-e-Server Borland AppServer Jboss (free open source)
HTTP(S)
App Server 2
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
10
J2EE Benefits
High availability Scalability Integration with existing systems Freedom to choose vendors of application servers, tools, components Multi-platform
11
J2EE Benefits
Services allow developer to focus on business Component development facilitates maintenance and reuse Enables deploy-time behaviors Supports division of labor
12
J2EE Benefits
Dont forget to say that Java is cool!
13
Main technologies
JavaServer Pages (JSP) Servlet Enterprise JavaBeans (EJB)
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
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
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
17
18
19
Stand-alone client
20
Web-centric application
21
Business-to-business
22
Implicit invocation Communication is loosely coupled, reliable and asynchronous Supports 2 models:
point-to-point publish/subscribe
23
JMS
Point-to-point
Destination is queue
24
JMS
Publish-subscribe
Destination is topic
25
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.
26
Transaction service:
Controls transactions automatically You can demarcate transactions explicitly Or you can specify relationships between methods that make up a single transaction
27
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
28
Integration to non-J2EE systems, such as mainframes and ERPs. Standard API to access different EIS Vendors implement EIS-specific resource adapters
29
30
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
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
33
34
35
EJB at runtime
36
EJB at runtime
37
Types of EJB
EJB Taxonomy
EntityBean BMP
CMP
MessageDrivenBean
New!
38
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
39
Session Bean
Contains no user-specific data Business process that provides a generic service Container can pool stateless beans Example: shopping catalog
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 clients session Example: shopping order
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
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
43
4. Examples
JSP example Servlet example EJB example
44
JSP example
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"> </td> <td width="550"> <h1>My name is Duke. What's yours?</h1> </td> </tr>
46
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>
47
Servlet example
public class HelloWorldServlet extends HttpServlet {
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; }
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; }
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(); }
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(); }
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; } . . .
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!"); } } }
54
Questions
55
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
56
57