Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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 Where Have We Been? Where Are We Going? Year 1 • JDK All Things to Everyone J1-680, Hapner/Shannon Year 2 • JDK “All Things to the Enterprise” • Early Development of Consumer Java • Early Development of “Enterprise” APIs” Year 3 • Micro Edition • Standard Edition • Enterprise Edition 4 Java 2 Platforms Java Technology Enabled Devices J1-680, Hapner/Shannon Java Technology Enabled Desktop Workgroup Server High-End Server 5 Why another Java™ 2 Platform? J1-680, Hapner/Shannon 6 The Global Enterprise D EIS Tier Middle-Tiers Clients J1-680, Hapner/Shannon D D ERP Systems DBMSs Enterprise Services Device 7 Enterprise Services Require • Concurrency (multi user) • Scalability • Administration • Consistency (Transactions) • EIS Integration • Security • Distribution • Availability 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 HTTP/ HTTPS JavaMail JAF JDBC JMS JAF JNDI JavaMail JTA JMS App Client Container App Client JNDI J2SE EJB RMI RMI/IIOP Servlet JSP JDBC HTTP/ HTTPS EJB Container RMI/IIOP Applet Web Container JTA Applet Container J2SE J2SE JDBC RMI/IIOP JMS JNDI RMI 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) • Scalability • Administration • Consistency (Transactions) • Integration • Security • Distribution • Availability 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 Module EJB 1 1 DD DD Web Client Module 2 APP DD EJB WEB 2 WEB DD DD Application Client Module 3 DD J1-680, Hapner/Shannon 3 Deployment Tool DD 19 Application Life Cycle Creation Created by Component Developer Assembly Assembled J2EE Modules and Augmented by Application Assembler Deployment 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 • JNDI 1.2 • JDBC™ 2.0 • JTA 1.0 • RMI/IIOP 1.0 • JMS 1.0 • EJB 1.1 • JavaMail™ 1.1 • Servlet 2.2 • JAF 1.0 • JSP 1.1 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 Enterprise JavaBean Enterprise Information Systems (EIS): Enterprise JavaBean Relational-Database, Legacy Applications, ERP Systems Client Client Web Server JSP, Servlet, HTML, XML Client Other Services: JNDI, JMS, Java Mail Client Tier J1-677, Kassem Middle Tier EIS Tier 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 Session EJP Data Access Bean Connector EIS HTTP(S) Service Servlet/JSP Middle Tier J1-677, Kassem 13 Application Scenarios Web Server App. Server 6 7 1 Web Server Browser EIS Resources App. Server Stand-alone 5 2 3 J1-677, Kassem 4 14 Core Application Scenarios 1 • n-tier Web Access – HTML, XML, HTTP client – JSP/Servlets, RMI/IIOP – EJBs, JDBC (Connectors) 3 Sample App. • n-tier Intranet Access – EJB Client, EJB Sever 5 • 2-tier Java Client – JSP/Servlets and JDBC 7 • B2B Enterprise Transactions – EJBs, JMS and XML 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 table product ...) table ...) lineitem ( orderid linenum itemid table orders ( orderid userid ...) ...) table category ( suppid ( productid category table supplier attrdesc ( attrcode ( ...) catid ...) table account ( userid table inventoryitem itemid productid supplier ...) J1-677, Kassem ...) ( table orderstatus ( orderid linenum ...) 21 SA—Architecture Session Beans Entity Beans Access Beans Tables Physical DBs Account UserValidatorEJB AccountEJB AccountDAB Orders MailerEJB OrderEJB OrderDAB OrderStatus db1 ShoppingCartEJB Line item EStoreKeeperEJB CatalogDAB J1-677, Kassem db2 Product CatalogEJB InventoryEJB Category InventoryDAB Inventory 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 { Locate Catalog if (catalog == null) { EJB’s H/I using JNDI try { 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