J1-680, Hapner/Shannon. 1. Java. ™. 2 Platform,. Enterprise Edition (J2EE).
Bruno Souza. Java Technologist, Sun Microsystems, Inc.
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
J1-677, Kassem
23
SA—JSP Usage … ... ... 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