55
1 Java 2 Platform, Enterprise Edition (J2EE): Enabling Technologies for EAI Tony Ng, Staff Engineer Rahul Sharma, Senior Staff Engineer Sun Microsystems Inc.

J2EE Tutorial Sun Systems

Embed Size (px)

Citation preview

Page 1: J2EE Tutorial Sun Systems

1

Java 2 Platform,Enterprise Edition (J2EE):

Enabling Technologies for EAI

Tony Ng, Staff EngineerRahul Sharma, Senior Staff Engineer

Sun Microsystems Inc.

Page 2: J2EE Tutorial Sun Systems

2

J2EE Overview

Tony Ng, Staff EngineerSun Microsystems Inc.

Page 3: J2EE Tutorial Sun Systems

3

What is Java 2 Platform, Enterprise Edition?• Java 2 Enterprise Edition (J2EE) is a

platform that enables solutions for developing, deploying and managing n-tier server-centric enterprise applications.

• J2EE provides building blocks for EAI

Page 4: J2EE Tutorial Sun Systems

4

Java™ Platforms

Java Technology

Enabled Desktop

WorkgroupServer

Java TechnologyEnabled Devices

High-EndServer

Page 5: J2EE Tutorial Sun Systems

5

J2EE Integrated Platform

Transactions

Mail

ObjectsDirectory

Transactions

Messaging

Transactions Messaging Directory

Data Objects Mail

Page 6: J2EE Tutorial Sun Systems

6

J2EE Platform Deliverables

• J2EE specification– Defines the J2EE requirements

• J2EE reference implementation– Prototype of J2EE platform

• J2EE compatibility test suite– Vaidates J2EE platform compatibility

• J2EE blueprints– Best practices for J2EE solutions

Page 7: J2EE Tutorial Sun Systems

7

J2EE Reference Implementation

• Fully functional prototype• Allow development of compatibility tests• Help developers prototype J2EE

technology-enabled applications• Help server platform and tool vendors

build J2EE platform support in their products

• Source code available

Page 8: J2EE Tutorial Sun Systems

8

Compatibility Test Suite

• Allow branding of compatible servers• Ensure all J2EE implementations

branded by Sun conform to the J2EE specification

• Move us towards the goal of Write Once, Run Anywhere

Page 9: J2EE Tutorial Sun Systems

9

J2EE Blueprints

• Best practices for J2EE– Examples, patterns, templates

• J2EE blueprints include:– Book, Designing Enterprise Applications– Application— “Java Pet Store”

Page 10: J2EE Tutorial Sun Systems

10

J2EE Architecture

Page 11: J2EE Tutorial Sun Systems

11

J2EE Components

• Enterprise JavaBeansTM (EJB™)– Business logic

• JavaServer PagesTM (JSP)– Dynamic content

• Servlet– Portable CGI script

• Application Client– First-tier Java application

Page 12: J2EE Tutorial Sun Systems

12

J2EE Technologies

• J2EE Connector Architecture– Enterprise systems integration

• Java Message Service (JMS)– Asynchronous messaging

• Java API for XML Processing– XML transformation

• Java Transaction API– Data integrity

Page 13: J2EE Tutorial Sun Systems

13

J2EE Technologies (Cont...)

• Java Naming and Directory Interface (JNDI)– Enterprise directory

• JavaMail– Email Notification

• JDBC– Database connectivity

• JavaIDL, RMI, CORBA– Remote services

Page 14: J2EE Tutorial Sun Systems

14

J2EE Containers

• Container handles:– Concurrency– Transactions– Security– Scalability– Distribution

• Components provide:– Business logic– Presentation

Page 15: J2EE Tutorial Sun Systems

15

J2EE Components and Containers

JND

I

J2SE

JMS

RM

I/IIO

PJD

BC

DatabaseDatabase

AppAppClientClient

App Client App Client ContainerContainer

HTTP/HTTP/HTTPSHTTPS

J2SEJ2SERMIRMI

J2SEJ2SE

JND

IJN

DI

JMS

JMS

RM

I/IIO

PR

MI/I

IOP

JDB

CJD

BC

JTA

JTA JavaMailJavaMail

JAFJAF JND

IJN

DI

JMS

JMS

RM

I/IIO

PR

MI/I

IOP

JDB

CJD

BC

JTA

JTA JavaMailJavaMail

JAFJAF

HTTP/HTTP/HTTPHTTP

SS

Applet Applet ContainerContainer

AppletApplet JSPJSP ServletServlet EJBEJB

Web ContainerWeb Container EJB ContainerEJB Container

RMIRMI

J2SEJ2SE

Page 16: J2EE Tutorial Sun Systems

16

Benefits of Using J2EE

• Faster solution delivery time to market– Components– JavaServer Pages, EJB and other APIs

• Freedom of choice– No vendor lock– Skill reuse

• Simplified connectivity– JDBC, Connector, CORBA, JMS

Page 17: J2EE Tutorial Sun Systems

17

J2EE and EAI

• Components and containers:– EJB:business process– Servlet, JSP: web components

• JAXP: XML parsing and transformation

• Connectors: EIS integration

• JMS: Asynchronous messaging

• Future: JAXM, XML data binding

Page 18: J2EE Tutorial Sun Systems

18

Building EAI framework

• J2EE provides building blocks• EAI frameworks add:

– Intelligent routing– Metadata facility– Rules engine– Integration of business processes– Workflow– Tools

Page 19: J2EE Tutorial Sun Systems

19

Enterprise JavaBeans

Tony Ng, Staff EngineerSun Microsystems Inc.

Page 20: J2EE Tutorial Sun Systems

20

The Problem

• Difficult to write distributed, n-tier applications

• Focus on business logic, not plumbing• Multi-platform, heterogeneous

environment• Time to market

Page 21: J2EE Tutorial Sun Systems

21

What Is the Enterprise JavaBeans Architecture?• A component architecture for the

development and deployment of distributed business applications

• Goals– Simplify development and deployment of

business applications– Separate business logic from system code– Portable components (Write Once,

Run Anywhere™)– Allow multi-vendor interoperability

Page 22: J2EE Tutorial Sun Systems

22

EJB Features

• Flexible component model• Attribute-based application semantics• Transaction: Declarative and

programmatic• Security: ACLs on operations• Distributed access: home and remote

interfaces• Deployment: ejb-jar file

Page 23: J2EE Tutorial Sun Systems

23

Benefits

• Simplifies development• Write once, run anywhere• Industry support• Vendor/platform independent• Partitioning of expertise

Page 24: J2EE Tutorial Sun Systems

24

Types of Enterprise Beans

• Session Beans– Stateless– Stateful

• Entity Beans– Bean-managed persistence– Container-managed persistence

• Message-Driven Beans

Page 25: J2EE Tutorial Sun Systems

25

Session Beans

• On behalf of a single client• May keep conversation state (stateful)• Relatively short-lived: client session• Do not survive server crashes• Example: shopping cart

Page 26: J2EE Tutorial Sun Systems

26

Entity Beans

• Represents business entities• Shared access for multiple users• Long-lived: as long as data in database• Transactional• Survive server crashes• Container Managed Persistence:

– Relationships, EJB-QL• Example: Account, Employee

Page 27: J2EE Tutorial Sun Systems

27

Message-driven Beans

• New enterprise bean type– Asynchronous– Activated upon message arrival– Stateless– No home or remote interface– Configured as listener for queue/topic

Page 28: J2EE Tutorial Sun Systems

28

Message-driven Bean Scenario

OrderBean

InventoryManagement

Bean

Mail

MessageDrivenBean

JMS Topics

Publish/subscribe

ProcessOrder

Procure Inventory

<Entity EJB>

<Entity EJB>

Database

Page 29: J2EE Tutorial Sun Systems

29

Roles

• Enterprise bean provider• Application assemblers• Deployers• System administrator• EJB server/container provider

Page 30: J2EE Tutorial Sun Systems

30

Deployment Descriptor

• Declarative rather than programmatic• Allows easy customization• Transaction attributes• Security attributes• Access control list• Resource and EJB references• Environment properties

Page 31: J2EE Tutorial Sun Systems

31

Transaction

• Declarative or programmatic• Transparent support for distributed

transaction• EJB server handles

– transaction boundaries– propagation– resource enlistments

Page 32: J2EE Tutorial Sun Systems

32

Security

• Declarative and/or programmatic• Access control list on business

methods• RunAs mode• Security-related methods in enterprise

bean context

Page 33: J2EE Tutorial Sun Systems

33

Writing Enterprise beans

• Implement business methods and component contract

• Define home and remote interface• Define deployment descriptor• Deploy and Run• Tools support

Page 34: J2EE Tutorial Sun Systems

34

Home Interface

• Allows a client to create, locate or destroy a bean

• Example:public interface AccountHome extends EJBHome {

public Account create(String ssn, String name)throws CreateException, RemoteException;

public Account findByPrimaryKey(String ssn)

throws FinderException, RemoteException;

}

Page 35: J2EE Tutorial Sun Systems

35

Remote Interface

• Exposes business methods to clients• Example:public interface Account extends EJBObject {

public void debit(double amount) throws

InsufficientBalanceException, RemoteException;

public void credit(double amount) throws

RemoteException;

public double getBalance() throws

RemoteException;

}

Page 36: J2EE Tutorial Sun Systems

36

Business Logic

public class AccountBean implements EntityBean {

// entity state

private String name;

private double balance;

public void debit(double amount) throws

InsufficientBalanceException {

if (balance - amount < 0.0) {

throw new InsufficientBalanceException();

}

balance -= amount;

}

// more business methods and

// component contract implementation

}

Page 37: J2EE Tutorial Sun Systems

37

XML Support in J2EE

Tony Ng, Staff EngineerSun Microsystems Inc.

Page 38: J2EE Tutorial Sun Systems

38

XML in J2EE

• Java API for XML Processing• Future Technologies:

– Java API for XML Messaging (JAXM)– Java XML Data Binding

Page 39: J2EE Tutorial Sun Systems

39

JAXP 1.1

• Java Community Process initiative JSR-000063

• Feature list:– SAX2.0.– SAX 2 extensions.– DOM Level 2 Core interfaces.– XSLT 1.0– Improved mechanism for factory lookup.

Page 40: J2EE Tutorial Sun Systems

40

JAXP: Processing APIs for Java

User Application

Reference Impl Other Impl

JAXP Interfaces

Page 41: J2EE Tutorial Sun Systems

41

JAXP Description

• A lightweight API for parsing XML Documents

• API for transformation, referred to as TrAX.

• Allows for pluggable parsers• Allows for pluggable XSLT enginges.• Allows processing of XML using:

– Callback Driven (SAX)– Tree Based (DOM)– XSL Transformation.

Page 42: J2EE Tutorial Sun Systems

42

SAX2.0 API

• Simple API for XML• Accesses Documents Serially• Fast and Lightweight• Harder to Program• Sequential Access Only• Org.xml.sax• Org.xml.sax.ext

Page 43: J2EE Tutorial Sun Systems

43

SAX 2.0 (Contd)

ProvidedHandler

XMLDocument Parser

EventsInput

Page 44: J2EE Tutorial Sun Systems

44

SAX used via JAXP

import java.xml.parsers.*import org.xml.sax.*

SAXParserFactory factory = SAXParserFactory.newInstance();factory.setValidating(true);SAXParser parser = factory.newSAXParser();parser.parse("http://server.com/foo.xml", handler);

// can also parse InputStreams, Files, and // SAX input sources.

Page 45: J2EE Tutorial Sun Systems

45

SAX ContentHandler

import org.xml.sax.*

public class MyHandler implements ContentHandler {public void startDocument() throws SAXException {

// start processing here. Could store it in a // stack and build your own tree representation// This is the first method invoked

}

public void endDocument() throws SAXException {// This is the last method invoked on the

// handler}

}

Page 46: J2EE Tutorial Sun Systems

46

DOM Level 2

• Document Object Model• Access XML document via a tree

structure• Composed of element nodes and text

nodes• Can "walk" the tree back and forth• Larger memory requirements• org.w3c.dom.*

Page 47: J2EE Tutorial Sun Systems

47

DOM Level 2 (Contd)

XMLDocument Parser

Input Creates Tree

Page 48: J2EE Tutorial Sun Systems

48

DOM used via JAXP

import java.xml.parsers.*import org.w3c.dom.*

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();factory.setValidating(true);DocumentBuilder builder = factory.newDocumentBuilder();Document doc =

builder.parse("http://server.com/foo.xml");

// can also parse InputStreams, Files, and // SAX input sources.

Page 49: J2EE Tutorial Sun Systems

49

XSLT 1.0

• XSL Transformations.• Syntax and semantics for transforming

xml documents into other xml documents or any other format.

• Expressed as a well-formed xml document.

• Recommended Processing Instruction to apply to an xml document– <?xml-stylesheet href="mystyle.css"

type="text/css"?>

Page 50: J2EE Tutorial Sun Systems

50

XSLT 1.0 (Contd)

XMLDocument

XSLT Processor

Input

XSLStylesheet

Resulting XML

Document

Result

Page 51: J2EE Tutorial Sun Systems

51

XSLT used via JAXP

import java.xml.transform.*;

Transformer transformer;TransformerFactory factory = TransformerFactory.newInstance();try {

// Create a transformer for a particular stylesheet.transformer = factory.newTransformer(new StreamSource(stylesheet));

// Transform the source xml to System.out.transformer.transform(new StreamSource(sourceId),new StreamSource(System.out));

} catch (Exception e) {// handle error

}

Page 52: J2EE Tutorial Sun Systems

52

XSLT used via JAXP (contd)The following example illustrates the serialization of a DOM node to an XML stream.

import java.xml.transform.*;

TransformerFactory tfactory = TransformerFactory.newInstance();Transformer serializer = tfactory.newTransformer();Properties oprops = new Properties();oprops.put(“method”, “html”);oprops.put(“indent-amount”, “2”);serializer.setOutputProperties(oprops);serializer.transform(new DOMSource(doc),new StreamResult(System.out));

Page 53: J2EE Tutorial Sun Systems

53

Plugability

• Factory lookup is accomplished by– System property

• javax.xml.parsers.SAXParserFactory• javax.xml.parsers.DocumentBuilderFactory• javax.xml.transform.TransformerFactory

– $JAVA_HOME/lib/jaxp.properties file– Jar Services API

• META-INF/services/javax.xml.parsers.XXXFactory

– Reference Default

Page 54: J2EE Tutorial Sun Systems

54

Reference Implementation

• Parser and XSLT Engine based on ASF Code

• Apache Crimson for XML Parsing• Apache Xalan for XSLT Processing

Page 55: J2EE Tutorial Sun Systems

55

Current Status

• Public Review 2 of the spec and beta of the RI can be obtained by following links from – http://java.sun.com/xml

• eedback aliases

[email protected]