Download presentation
Presentation is loading. Please wait.
Published byIda Lesmana Modified over 6 years ago
1
J2EE – Building Component-based Enterprise Web Applications
05/09/2002 Paulo Merson Copyright 2002 © Paulo Merson
2
Copyright 2002 © Paulo Merson
Agenda Application servers What is J2EE? Main component types Application Scenarios J2EE APIs and Services EJB – a closer look Examples Copyright 2002 © Paulo Merson
3
Copyright 2002 © Paulo Merson
1. Application Servers In the beginning, there was darkness and cold. Then, … terminals mainframe Centralized, non-distributed Copyright 2002 © Paulo Merson
4
Copyright 2002 © Paulo Merson
Application Servers In the 90’s, systems should be client-server Copyright 2002 © Paulo Merson
5
Copyright 2002 © Paulo Merson
Application Servers Today, enterprise applications use the multi-tier model Copyright 2002 © Paulo Merson
6
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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
App Server 1 Internet Browser Web Server (HTTP Server) HTTP(S) App Server 2 The Web Server (also called HTTP Server) serves only static content, typically HTML pages. The Application server serves dynamic content and contains and environment to execute Java components. Usually there is a plug-in that must be installed in the web server in order to communicate with the AppServer. Typically, if the web server is IIS, the communication with the app server is via ISAPI, if it is Apache the communication is via NSAPI, and so on. Copyright 2002 © Paulo Merson
10
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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
13
Don’t forget to say that Java is cool!
J2EE Benefits Don’t forget to say that Java is cool! Copyright 2002 © Paulo Merson
14
Copyright 2002 © Paulo Merson
Main technologies JavaServer Pages (JSP) Servlet Enterprise JavaBeans (EJB) JSPs, servlets and EJBs are application components Copyright 2002 © Paulo Merson
15
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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 Actually, an HTTP servlet processes HTTP requests. APIs for maintaining session data throughout a web application and interacting with the user request overcomes the limitation of the stateless nature of HTTP. Copyright 2002 © Paulo Merson
17
Copyright 2002 © Paulo Merson
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
18
Copyright 2002 © Paulo Merson
J2EE Multi-tier Model Copyright 2002 © Paulo Merson
19
J2EE Application Scenarios
Multi-tier typical application Copyright 2002 © Paulo Merson
20
J2EE Application Scenarios
Stand-alone client Copyright 2002 © Paulo Merson
21
J2EE Application Scenarios
Web-centric application Copyright 2002 © Paulo Merson
22
J2EE Application Scenarios
Business-to-business Copyright 2002 © Paulo Merson
23
Copyright 2002 © Paulo Merson
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
24
Copyright 2002 © Paulo Merson
JMS Point-to-point Destination is “queue” Copyright 2002 © Paulo Merson
25
Copyright 2002 © Paulo Merson
JMS Publish-subscribe Destination is “topic” Copyright 2002 © Paulo Merson
26
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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 J2EE servers are not obliged to implement JTS. The transaction manager must support distributed transaction, what is typically done with XA. Copyright 2002 © Paulo Merson
28
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
J2EE Services and APIs JDBC JavaMail Java API for XML Parsing (JAXP) Web services APIs JAXP was added to J2EE v1.3 J2EE v1.3 determines that J2EE products must be capable of exporting enterprise beans using the IIOP protocol. This is required to enable interoperability and to make EJB appear as Corba objects. Copyright 2002 © Paulo Merson
31
Copyright 2002 © Paulo Merson
3. EJB – a closer look Copyright 2002 © Paulo Merson
32
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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
34
Copyright 2002 © Paulo Merson
35
Copyright 2002 © Paulo Merson
EJB – The Big Picture Copyright 2002 © Paulo Merson
36
Copyright 2002 © Paulo Merson
EJB at runtime Client can be local or remote Copyright 2002 © Paulo Merson
37
Copyright 2002 © Paulo Merson
EJB at runtime Copyright 2002 © Paulo Merson
38
Copyright 2002 © Paulo Merson
Types of EJB New! Copyright 2002 © Paulo Merson
39
Copyright 2002 © Paulo Merson
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 The type of the session bean (stateless or stateful) is declared in the DD. Copyright 2002 © Paulo Merson
40
Copyright 2002 © Paulo Merson
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 stateless session beans can have non-client specific state, for example, an open database connection. Copyright 2002 © Paulo Merson
41
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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
44
Copyright 2002 © Paulo Merson
4. Examples JSP example Servlet example EJB example Copyright 2002 © Paulo Merson
45
Copyright 2002 © Paulo Merson
JSP example Copyright 2002 © Paulo Merson
46
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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>"); } Other servlet examples implement the doPost() and/or doGet() methods. These methods reply only to POST or GET requests; if you want to handle all request types from a single method, your servlet can simply implement the service() method. (However, if you choose to implement the service() method, you will not be able to implement the doPost() or doGet() methods, unless you call super.service() at the beginning of the service() method.) Copyright 2002 © Paulo Merson
49
Copyright 2002 © Paulo Merson
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) } Many details are omitted in the source code examples. Copyright 2002 © Paulo Merson
50
Copyright 2002 © Paulo Merson
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() } Copyright 2002 © Paulo Merson
51
Copyright 2002 © Paulo Merson
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
52
Copyright 2002 © Paulo Merson
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; throw new CreateException("Invalid id: " + id); contents = new Vector(); Copyright 2002 © Paulo Merson
53
Copyright 2002 © Paulo Merson
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
Copyright 2002 © Paulo Merson
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
55
Copyright 2002 © Paulo Merson
Questions Copyright 2002 © Paulo Merson
56
Copyright 2002 © Paulo Merson
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 Copyright 2002 © Paulo Merson
57
Copyright 2002 © Paulo Merson
Sources & Resources The J2EE Tutorial. Sun Microsystems IBM WebSphere Application Server manuals BEA WebLogic Server manuals Copyright 2002 © Paulo Merson
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.