Java 2 Platform, Enterprise Edition (J2EE) Bruno Souza Java Technologist, Sun Microsystems, Inc. J1-680, Hapner/Shannon 1
Contents The Java 2 Platform, Enterprise Edition (J2EE) J2EE Environment APM and key APM questions Application Scenarios and the Sample Application Deployment and Security Resources J1-677, Kassem 2
A Short History of Java Enterprise Technology J1-680, Hapner/Shannon 3
The Java Platform Year 1 JDK All Things to Everyone Where Have We Been? Where Are We Going? Year 2 Year 3 JDK All Things to the Enterprise Early Development of Consumer Java Early Development of Enterprise APIs Micro Edition Standard Edition Enterprise Edition J1-680, Hapner/Shannon 4
Java 2 Platforms Java Technology Enabled Devices Java Technology Enabled Desktop Workgroup Server High-End Server J1-680, Hapner/Shannon 5
Why another Java 2 Platform? J1-680, Hapner/Shannon 6
The Global Enterprise D D D EIS Tier DBMSs ERP Systems Middle-Tiers Enterprise Services Clients Device J1-680, Hapner/Shannon 7
Enterprise Services Require Concurrency (multi user) Consistency (Transactions) Security Availability Scalability Administration EIS Integration Distribution J1-680, Hapner/Shannon 8
The Java 2 Platform, Enterprise Edition Develop With the J2EE App Model Deploy With the J2EE App unit Run On the J2EE Platform J1-680, Hapner/Shannon 9
J2EE Platform J1-680, Hapner/Shannon 10
What is the purpose of J2EE Containers? J1-680, Hapner/Shannon 11
J2EE Platform Applet Container Web Container EJB Container Applet HTTP/ HTTPS JSP Servlet RMI EJB J2SE App Client Container App Client HTTP/ HTTPS J2SE RMI JNDI JMS RMI/IIOP JDBC JNDI JMS JTA JavaMail JAF RMI/IIOP JDBC JNDI JMS JTA JavaMail JAF RMI/IIOP JDBC J2SE J2SE Database J1-680, Hapner/Shannon 12
Containers and Components The container is the car The component is the driver The container is the platform The component is your application J1-680, Hapner/Shannon 13
J2EE Containers Containers do their work invisibly No complicated APIs They control by interposition Containers implement J2EE Look the same to components Have great freedom to innovate J1-680, Hapner/Shannon 14
J2EE Containers Handle Concurrency (multi user) Consistency (Transactions) Security Availability Scalability Administration Integration Distribution J1-680, Hapner/Shannon 15
J2EE Components Handle Presentation Business logic Data access J1-680, Hapner/Shannon 16
Container Perspectives To a J2EE vendor It is their product To a component developer It is a standard app model To an app assembler It is a standard app package To an executing component It is god J1-680, Hapner/Shannon 17
Why Does J2EE Focus on Deployment? J1-680, Hapner/Shannon 18
Application Packaging EJB EJB EJB EJB Module DD 1 1 DD APP DD WEB WEB Web Client Module DD 2 2 DD Deployment Tool Application Client Module 3 DD 3 DD J1-680, Hapner/Shannon 19
Application Life Cycle Creation Assembly Deployment Created by Component Developer J2EE Modules Assembled and Augmented by Application Assembler J2EE APP Processed by Deployer Deploy J2EE Container Enterprise Components J1-680, Hapner/Shannon 20
The Deployer Is an expert in the operational environment Familiar with local security practices Familiar with local EIS configuration Familiar with local containers and their apps Uses J2EE platform product tools J1-680, Hapner/Shannon 21
Deployment Summary Apps may be written without knowledge of the operational environment Deployment Descriptor communicates app s needs A key interface between application developer and platform J1-680, Hapner/Shannon 25
What Exactly Is in J2EE? J1-680, Hapner/Shannon 26
J2EE API Summary J2SE 1.2 JDBC 2.0 RMI/IIOP 1.0 EJB 1.1 Servlet 2.2 JSP 1.1 JNDI 1.2 JTA 1.0 JMS 1.0 JavaMail 1.1 JAF 1.0 J1-680, Hapner/Shannon 27
J2EE Standards TCP/IP HTTP 1.0 HTML 3.2 SSL 3.0 IIOP 1.0 J1-680, Hapner/Shannon 28
The Java 2 Platform, Enterprise Edition Platform Specification Defines J2EE requirements Compatibility Test Suite Validates J2EE platform compatibility Reference Implementation Operational J2EE platform Application Programming Model Describes how to build J2EE applications J1-680, Hapner/Shannon 29
Java 2 Platform, Enterprise Edition Application Programming Model (APM) Organized set of design patterns, templates and architectural principles Focus is on design of manageable, deployable and maintainable J2EE applications Results in faster product delivery time to market of enterprise solutions Recommends how the J2EE specifications should be applied to application domains J1-677, Kassem 3
Some Key APM Questions Choose Servlets or JavaServer Pages technology (JSP)? Access EIS Resources via Enterprise JavaBeans technology (EJB) server or Directly from JSP? Session Beans or Entity Beans? Distributed transactions or local transactions? How to exchange Data with External Systems? J1-677, Kassem 6
The J2EE Environment Enabling End-to-end Solutions Firewall Client Application Server Client Client Enterprise JavaBean Enterprise Information Systems (EIS): Client Client Web Server JSP, Servlet, HTML, XML Enterprise JavaBean Relational-Database, Legacy Applications, ERP Systems Client Tier Middle Tier Other Services: JNDI, JMS, Java Mail EIS Tier J1-677, Kassem 7
Web Access Exposes application logic to web client(s) as coarse grained service(s): Responsible for handling user input/application presentation Named via URI Modeled as HTML (or XML) Comprised of dynamic and static content Java Server Pages for dynamic content: Higher level of abstraction than Servlets Easier to generate HTML (and XML in future) J1-677, Kassem 8
Other Clients EJB from another application : RMI/IIOP now, JMS later Standalone clients : CORBA client: IIOP access direct to application logic Java technology client: RMI/IIOP or JMS access Desktop productivity application: MS desktop integration solution via plug-in, JRE and RMI/IIOP J1-677, Kassem 9
Application Logic Modeled using EJBs: SessionBean (stateless & stateful) EntityBean (CMP or BMP) Componentize: Workflow, processes, business rules and entities Fine grain imperative interface contract External resources are logically named internally Customized via deployment descriptor Resolved by deployer at deployment time J1-677, Kassem 11
Enterprise Information Services (EIS) Integration is achieved by either: Directly using platform API such as: JDBC JMS Java Naming and Directory Interface (JNDI) Or via Connector(s): Connector is: Resource adapter, Access Bean, integration tool(s) Ubiquitous Connector APIs for specific EIS products J1-677, Kassem 12
EJB Components JNDI EJB Container Client Entity EJP Data Access Bean Connector EIS HTTP(S) Service Servlet/JSP Session EJP Data Access Bean Connector EIS Middle Tier J1-677, Kassem 13
Application Scenarios Web Server App. Server 1 6 7 EIS Resources Browser Web Server App. Server Stand-alone 2 5 3 4 J1-677, Kassem 14
Core Application Scenarios 1 3 5 7 n-tier Web Access HTML, XML, HTTP client JSP/Servlets, RMI/IIOP EJBs, JDBC (Connectors) n-tier Intranet Access EJB Client, EJB Sever 2-tier Java Client JSP/Servlets and JDBC B2B Enterprise Transactions EJBs, JMS and XML Sample App. J1-677, Kassem 15
Sample Application High Level Requirements Must offer Web Presence Must be Robust and Scalable Must leverage existing EIS resources Must utilize core competencies of diverse development teams Must facilitate B2B transactions Get it done yesterday! J1-677, Kassem 16
Sample Application High Level Technical Decisions Client tier Chose HTML Clients for End-User Web Access Chose XML for selective Data externalization Web Server tier Chose JSP/Servlets to be WS neutral App Server tier Chose EJB s to be AS neutral JDBC Data Access Beans to encapsulate EIS access Chose to optionally support distributed transactions J1-677, Kassem 17
SA Scenario Web-based browsing of a product catalog Creation and maintenance of a shopping cart User account creation Placing orders Secure order processing B2B transactions Externalization of order data (expressed in XML) Order confirmation using e-mail J1-677, Kassem 19
SA Activity Diagram Customer Sales Warehouse View Catalog Add to Cart Select Account Process Order Pull Stock Ship Order Receive Order Bill Customer Pay Bill Close Order J1-677, Kassem 20
SA DB Schema table product ( productid category...) table category ( catid...) table lineitem ( orderid linenum itemid...) table orders ( orderid userid...) table supplier ( suppid...) table attrdesc ( attrcode...) table inventoryitem ( itemid productid supplier...) table orderstatus ( orderid linenum...) table account ( userid...) J1-677, Kassem 21
SA Architecture Session Beans UserValidatorEJB Entity Beans AccountEJB Access Beans AccountDAB Tables Account Physical DBs MailerEJB Orders OrderEJB OrderDAB OrderStatus db1 ShoppingCartEJB Line item EStoreKeeperEJB CatalogDAB Category db2 CatalogEJB Product InventoryEJB InventoryDAB Inventory J1-677, Kassem 22
SA JSP Usage <html> <jsp:request include="/banner.html"/> <form action="validatenewuseraccount.jsp" name="login"> <table border ="0"> <tr><td>user ID:</td> <td align="left"><input type="text" size="15" name="user_name"></td> </tr> <tr><td>password:</td> <td align="left"><input type="password" size="15" name = "password"></td> </tr>.. </table> </html> J1-677, Kassem 23
SA JSP Usage <html> <% if (formvalid){ %> <jsp:usebean id="useraccount" class="com.sunw.estore.account.jspbeans.useraccountjspbean" scope="session" /> <jsp:setproperty name="useraccount" property="init" value="<%= session %>" /> <jsp:setproperty name="useraccount" property="billinglastname" param="last_name" />... <% } else { %>... <% } %> </html> J1-677, Kassem 24
SA Controller Interface public interface EStorekeeper extends EJBObject { public Catalog getcatalog() throws RemoteException; public ShoppingCart getshoppingcart() throws RemoteException; public Credential getcredential() throws RemoteException; public Account getaccount() throws RemoteException; public Enumeration getorders() throws RemoteException, FinderException; public void handleevent(estoreevent se) throws RemoteException; } J1-677, Kassem 25
SA Controller Implementation public class EStorekeeperEJB implements SessionBean { public void ejbcreate() throws RemoteException { sm = new StateMachine(this); } public Catalog getcatalog() throws RemoteException { if (catalog == null) { Locate Catalog try { EJB s H/I using JNDI Context initial = new InitialContext(); Object objref = initial.lookup (EJBUtil.jndiNameOfCatalogHome); CatalogHome cataloghome = (CatalogHome) PortableRemoteObject.narrow(objref, CatalogHome.class); catalog = cataloghome.create(); } catch (NamingException ne) {... } return catalog; } J1-677, Kassem 26
Application Model Makes Recommendations across all tiers Client Middle-tier (includes Web server and EJB) Data access Messaging External application integration Communication protocols Deployment file formats Results in Faster product delivery J1-677, Kassem 31
J2EE Resources White paper: http://java.sun.com/j2ee J1-677, Kassem 32