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 Year 2 Year 3
• JDK All • JDK “All • Micro
Things to Things to the Edition
Everyone Enterprise” • Standard
• Early Edition
Development
of Consumer • Enterprise
Java Edition
• Early
Development
of “Enterprise”
APIs”
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 • Scalability
(multi user)
• 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
Applet Container Web Container EJB Container
Applet HTTP/ JSP Servlet
HTTPS RMI EJB
J2SE
RMI/IIOP
RMI/IIOP
JavaMail JavaMail
JDBC
JDBC
JNDI
JMS
JNDI
JTA
JMS
JTA
App Client
Container JAF JAF
App HTTP/
Client HTTPS J2SE
RMI
RMI/IIOP
JDBC
JNDI
JMS
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 • Scalability
(multi user)
• 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 1
EJB APP
1
DD DD
DD
EJB
WEB Web Client 2
Module Deployment
2 Tool
WEB DD DD
Application 3
Client Module
3 DD
DD
J1-680, Hapner/Shannon 19
Application Life Cycle
Creation Assembly Deployment
Assembled
Created by J2EE Modules and Augmented J2EE APP Processed
Component by Application by Deployer
Developer Assembler
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
Application
Client Server
Enterprise Enterprise
Client JavaBean Information
Systems (EIS):
Client
Enterprise Relational-Database,
Client Web Server Legacy Applications,
JSP, Servlet, JavaBean ERP Systems
HTML, XML
Client
Other Services:
JNDI, JMS,
Java Mail
Client Tier Middle Tier 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
Data Access Connector EIS
Client Entity EJP Bean
HTTP(S) Service
Data Access Connector
Servlet/JSP Session EJP Bean EIS
Middle Tier
J1-677, Kassem 13
Application Scenarios
Web Server App. Server
6
7 EIS
1 Resources
Browser Web Server App. Server
Stand-alone
2 5
3 4
J1-677, Kassem 14
Core Application Scenarios
1
• n-tier Web Access
– HTML, XML, HTTP client Sample
– JSP/Servlets, RMI/IIOP App.
– EJBs, JDBC (Connectors)
3
• 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 supplier (
table product ( suppid
...)
productid
category table lineitem (
...) orderid table orders (
linenum orderid
itemid userid
...) ...)
table attrdesc (
table category ( attrcode
catid ...)
...)
table account (
userid
inventoryitem ...)
table (
itemid table orderstatus (
productid orderid
supplier linenum
...) ...)
J1-677, Kassem 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
CatalogDAB
EStoreKeeperEJB Category
db2
CatalogEJB Product
InventoryDAB Inventory
InventoryEJB
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