Java 2 Platform, Enterprise Edition (J2EE)

29 downloads 153 Views 2MB Size Report
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 …..
User ID:
Password:
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