1 copyright 2002 © paulo merson j2ee – building component-based enterprise web applications...

57
Copyright 2002 © Paulo Merson 1 J2EE – Building J2EE – Building Component-based Enterprise Component-based Enterprise Web Applications Web Applications 05/09/2002 05/09/2002 Paulo Merson

Post on 20-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Copyright 2002 © Paulo Merson 1

J2EE – Building J2EE – Building Component-based EnterpriseComponent-based Enterprise

Web ApplicationsWeb Applications

05/09/200205/09/2002

Paulo Merson

Copyright 2002 © Paulo Merson 2

Agenda1. Application servers2. What is J2EE?

Main component types Application Scenarios J2EE APIs and Services

3. EJB – a closer look4. Examples

Copyright 2002 © Paulo Merson 3

1. Application Servers In the beginning, there was darkness and

cold. Then, …

Centralized, non-distributed

terminals

mainframe

terminals

Copyright 2002 © Paulo Merson 4

Application Servers In the 90’s, systems should be client-

server

Copyright 2002 © Paulo Merson 5

Application Servers

Today, enterprise applications use the multi-tier model

Copyright 2002 © Paulo Merson 6

Application Servers

“Multi-tier applications” have several independent components

An application server provides the infrastructure and services to run such applications

Copyright 2002 © Paulo Merson 7

Application Servers

Application server products can be separated into 3 categories: J2EE-based solutions Non-J2EE solutions (PHP, ColdFusion, Perl,

etc.) And the Microsoft solution (ASP/COM and

now .NET with ASP.NET, VB.NET, C#, etc.)

Copyright 2002 © Paulo Merson 8

J2EE Application Servers

Major J2EE products: BEA WebLogic IBM WebSphere Sun iPlanet Application Server Oracle 9iAS HP/Bluestone Total-e-Server Borland AppServer Jboss (free open source)

Copyright 2002 © Paulo Merson 9

Web Server and Application Server

Web Server

(HTTP Server)

App Server 1

App Server 2

Internet Browser

HTTP(S)

Copyright 2002 © Paulo Merson 10

2. What is J2EE?

It is a public specification that embodies several technologies

Current version is 1.3 J2EE defines a model for developing

multi-tier, web based, enterprise applications with distributed components

Copyright 2002 © Paulo Merson 11

J2EE Benefits

High availability Scalability Integration with existing systems Freedom to choose vendors of

application servers, tools, components Multi-platform

Copyright 2002 © Paulo Merson 12

J2EE Benefits

Flexibility of scenarios and support to several types of clients

Programming productivity: Services allow developer to focus on business Component development facilitates maintenance

and reuse Enables deploy-time behaviors Supports division of labor

Copyright 2002 © Paulo Merson 13

J2EE Benefits

Don’t forget to say

that Java is cool!

Copyright 2002 © Paulo Merson 14

Main technologies

JavaServer Pages (JSP) Servlet Enterprise JavaBeans (EJB)

JSPs, servlets and EJBs are application components

Copyright 2002 © Paulo Merson 15

JSP Used for web pages with dynamic content Processes HTTP requests (non-blocking

call-and-return) Accepts HTML tags, special JSP tags, and

scriptlets of Java code Separates static content from presentation

logic Can be created by web designer using

HTML tools

Copyright 2002 © Paulo Merson 16

Servlet Used for web pages with dynamic content Processes HTTP requests (non-blocking call-

and-return) Written in Java; uses print statements to

render HTML Loaded into memory once and then called

many times Provides APIs for session management

Copyright 2002 © Paulo Merson 17

EJB EJBs are distributed components used to

implement business logic (no UI) Developer concentrates on business logic Availability, scalability, security,

interoperability and integrability handled by the J2EE server

Client of EJBs can be JSPs, servlets, other EJBs and external aplications

Clients see interfaces

Copyright 2002 © Paulo Merson 18

J2EE Multi-tier Model

Copyright 2002 © Paulo Merson 19

J2EE Application Scenarios

Multi-tier typical application

Copyright 2002 © Paulo Merson 20

J2EE Application Scenarios

Stand-alone client

Copyright 2002 © Paulo Merson 21

J2EE Application Scenarios

Web-centric application

Copyright 2002 © Paulo Merson 22

J2EE Application Scenarios

Business-to-business

Copyright 2002 © Paulo Merson 23

J2EE Services and APIs

Java Message Service (JMS) Implicit invocation Communication is loosely coupled,

reliable and asynchronous Supports 2 models:

point-to-point publish/subscribe

Copyright 2002 © Paulo Merson 24

JMS Point-to-point

Destination is “queue”

Copyright 2002 © Paulo Merson 25

JMS Publish-subscribe

Destination is “topic”

Copyright 2002 © Paulo Merson 26

J2EE Services and APIs

JNDI - Naming and directory services Applications use JNDI to locate objects,

such as environment entries, EJBs, datasources, message queues

JNDI is implementation independent Underlying implementation varies: LDAP,

DNS, DBMS, etc.

Copyright 2002 © Paulo Merson 27

J2EE Services and APIs

Transaction service: Controls transactions automatically You can demarcate transactions explicitly Or you can specify relationships between

methods that make up a single transaction

Copyright 2002 © Paulo Merson 28

J2EE Services and APIs

Security Java Authentication and Authorization Service

(JAAS) is the new (J2EE 1.3) standard for J2EE security

Authentication via userid/password or digital certificates

Role-based authorization limits access of users to resources (URLs, EJB methods)

Embedded security realm

Copyright 2002 © Paulo Merson 29

J2EE Services and APIs

J2EE Connector Architecture Integration to non-J2EE systems, such as

mainframes and ERPs. Standard API to access different EIS Vendors implement EIS-specific resource

adapters Support to Corba clients

Copyright 2002 © Paulo Merson 30

J2EE Services and APIs

JDBC JavaMail Java API for XML Parsing (JAXP) Web services APIs

Copyright 2002 © Paulo Merson 31

3. EJB – a closer look

Copyright 2002 © Paulo Merson 32

Home Interface

Methods to create, remove or locate EJB objects

The home interface implementation is the home object (generated)

The home object is a factory

Copyright 2002 © Paulo Merson 33

Remote Interface

Business methods available to clients The remote interface implementation

is the EJB object (generated) The EJB object acts as a proxy to the

EJB instance

Copyright 2002 © Paulo Merson 34

Copyright 2002 © Paulo Merson 35

EJB – The Big Picture

Copyright 2002 © Paulo Merson 36

EJB at runtime

Client can be local or remote

Copyright 2002 © Paulo Merson 37

EJB at runtime

Copyright 2002 © Paulo Merson 38

Types of EJB

EJB Taxonomy

Sta te ful

Sta te le ss

SessionBea n

BMP

C MP

EntityBea n M essa geDrivenBea n

Ente rp riseBea n

New!

Copyright 2002 © Paulo Merson 39

Session Bean

Stateful session bean: Retains conversational state (data) on

behalf of an individual client If state changed during this invocation, the

same state will be available upon the following invocation

Example: shopping cart

Copyright 2002 © Paulo Merson 40

Session Bean

Stateless session bean: Contains no user-specific data Business process that provides a generic

service Container can pool stateless beans Example: shopping catalog

Copyright 2002 © Paulo Merson 41

Entity Bean Represents business data stored in a

database persistent object Underlying data is normally one row of a

table A primary key uniquely identifies each bean

instance Allows shared access from multiple clients Can live past the duration of client’s session Example: shopping order

Copyright 2002 © Paulo Merson 42

Entity Bean

Bean-managed persistence (BMP): bean developer writes JDBC code to access the database; allows better control for the developer

Container-managed persistence (CMP): container generates all JDBC code to access the database; developer has less code to write, but also less control

Copyright 2002 © Paulo Merson 43

Message-Driven Bean

Message consumer for a JMS queue or topic

Benefits from EJB container services that are not available to standard JMS consumers

Has no home or remote interface Example: order processing – stock info

Copyright 2002 © Paulo Merson 44

4. Examples

JSP example Servlet example EJB example

Copyright 2002 © Paulo Merson 45

JSP example

Copyright 2002 © Paulo Merson 46

JSP example<%@ page import="hello.Greeting" %><jsp:useBean id="mybean" scope="page"

class="hello.Greeting"/><jsp:setProperty name="mybean" property="*" /><html><head><title>Hello, User</title></head><body bgcolor="#ffffff" background="background.gif"><%@ include file="dukebanner.html" %><table border="0" width="700"><tr><td width="150"> &nbsp; </td><td width="550"> <h1>My name is Duke. What's yours?</h1></td></tr>

Copyright 2002 © Paulo Merson 47

JSP example<tr> <td width="150" &nbsp; </td> <td width="550"><form method="get"><input type="text" name="username" size="25"> <br><input type="submit" value="Submit"><input type="reset" value="Reset"></td> </tr></form> </table><% if (request.getParameter("username") != null) {%><%@ include file="response.jsp" %><% }%></body></html>

Copyright 2002 © Paulo Merson 48

Servlet examplepublic class HelloWorldServlet extends HttpServlet {

public void service(HttpServletRequest req,

HttpServletResponse res) throws IOException {

res.setContentType("text/html");

PrintWriter out = res.getWriter();

out.println("<html><head><title>Hello

World Servlet</title></head>");

out.println("<body><h1>Hello

World!</h1></body></html>");

}

}

Copyright 2002 © Paulo Merson 49

EJB Example// Shopping Cart example

// Home interface

public interface CartHome extends EJBHome {

Cart create(String person)

throws RemoteException, CreateException;

Cart create(String person, String id)

throws RemoteException, CreateException;

}

Copyright 2002 © Paulo Merson 50

EJB Example// Remote interface

public interface Cart extends EJBObject {

public void addBook(String title)

throws RemoteException;

public void removeBook(String title)

throws BookException, RemoteException;

public Vector getContents()

throws RemoteException;

}

Copyright 2002 © Paulo Merson 51

EJB Example// Enterprise bean classpublic class CartEJB implements SessionBean { String customerName, customerId; Vector contents; private SessionContext sc;

public void ejbCreate(String person) throws CreateException { if (person == null) { throw new CreateException("Null person not allowed."); } else { customerName = person; } customerId = "0"; contents = new Vector(); }

Copyright 2002 © Paulo Merson 52

EJB Example public void ejbCreate(String person, String id) throws CreateException { if (person == null) { throw new CreateException("Null person not allowed."); } else { customerName = person; } IdVerifier idChecker = new IdVerifier(); if (idChecker.validate(id)) { customerId = id; } else { throw new CreateException("Invalid id: " + id); } contents = new Vector(); }

Copyright 2002 © Paulo Merson 53

EJB Example public void addBook(String title) { contents. addElement(title); }

public void removeBook(String title) throws BookException { boolean result = contents.removeElement(title); if (result == false) { throw new BookException(title + " not in cart."); } }

public Vector getContents() { return contents; }

. . .}

Copyright 2002 © Paulo Merson 54

EJB Example// EJB client (stand-alone application)public class CartClient { public static void main(String[] args) { try { CartHome home = (CartHome)initial.lookup("MyCart"); Cart shoppingCart = home.create("Duke DeEarl", "123"); shoppingCart.addBook("The Martian Chronicles"); shoppingCart.addBook("2001 A Space Odyssey"); shoppingCart.remove(); } catch (BookException ex) { System.err.println("Caught a BookException: " + ex.getMessage()); } catch (Exception ex) { System.err.println("Caught an unexpected exception!"); } }}

Copyright 2002 © Paulo Merson 55

Questions

Copyright 2002 © Paulo Merson 56

Sources & Resources Java 2 Platform Enterprise Edition

Specification, v1.3 Designing Enterprise Applications with the

Java 2, Enterprise Edition. Nicholas Kassen and the Enterprise Team

Does the App Server Maket Still Exist? Jean-Christophe Cimetiere

The State of The J2EE Application Server Market. Floyd Marinescu

Copyright 2002 © Paulo Merson 57

Sources & Resources

The J2EE Tutorial. Sun Microsystems IBM WebSphere Application Server

manuals BEA WebLogic Server manuals www.java.sun.com/j2ee www.theserverside.com