Sie sind auf Seite 1von 48

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

Das könnte Ihnen auch gefallen