Está en la página 1de 57

J2EE Building Component-based Enterprise Web Applications

05/09/2002

Paulo Merson
Copyright 2002 Paulo Merson
1

Agenda
1.

2.

Application servers What is J2EE?


Main component types Application Scenarios J2EE APIs and Services

3. 4.

EJB a closer look Examples

Copyright 2002 Paulo Merson

1. Application Servers

In the beginning, there was darkness and cold. Then,


mainframe terminals terminals

Centralized, non-distributed
Copyright 2002 Paulo Merson
3

Application Servers

In the 90s, systems should be clientserver

Copyright 2002 Paulo Merson

Application Servers
Today,

enterprise applications use the multi-tier model

Copyright 2002 Paulo Merson

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

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

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

Web Server and Application Server


App Server 1 Internet Browser Web Server (HTTP Server)

HTTP(S)

App Server 2

Copyright 2002 Paulo Merson

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

10

J2EE Benefits
High availability Scalability Integration with existing systems Freedom to choose vendors of application servers, tools, components Multi-platform

Copyright 2002 Paulo Merson

11

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

12

J2EE Benefits
Dont forget to say that Java is cool!

Copyright 2002 Paulo Merson

13

Main technologies
JavaServer Pages (JSP) Servlet Enterprise JavaBeans (EJB)

JSPs, servlets and EJBs are application components

Copyright 2002 Paulo Merson

14

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

15

Servlet

Used for web pages with dynamic content Processes HTTP requests (non-blocking calland-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

16

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

17

J2EE Multi-tier Model

Copyright 2002 Paulo Merson

18

J2EE Application Scenarios

Multi-tier typical application

Copyright 2002 Paulo Merson

19

J2EE Application Scenarios

Stand-alone client

Copyright 2002 Paulo Merson

20

J2EE Application Scenarios

Web-centric application

Copyright 2002 Paulo Merson

21

J2EE Application Scenarios

Business-to-business

Copyright 2002 Paulo Merson

22

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

23

JMS

Point-to-point

Destination is queue

Copyright 2002 Paulo Merson

24

JMS

Publish-subscribe

Destination is topic

Copyright 2002 Paulo Merson

25

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

26

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

27

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

28

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

29

J2EE Services and APIs


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

Copyright 2002 Paulo Merson

30

3. EJB a closer look

Copyright 2002 Paulo Merson

31

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

32

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

33

Copyright 2002 Paulo Merson

34

EJB The Big Picture

Copyright 2002 Paulo Merson

35

EJB at runtime

Client can be local or remote


Copyright 2002 Paulo Merson

36

EJB at runtime

Copyright 2002 Paulo Merson

37

Types of EJB
EJB Taxonomy

EnterpriseBean SessionBean Stateful


Stateless

EntityBean BMP
CMP

MessageDrivenBean
New!

Copyright 2002 Paulo Merson

38

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

39

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

40

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 clients session Example: shopping order

Copyright 2002 Paulo Merson

41

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

42

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

43

4. Examples
JSP example Servlet example EJB example

Copyright 2002 Paulo Merson

44

JSP example

Copyright 2002 Paulo Merson

45

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

46

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

47

Servlet example
public 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

48

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

49

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

50

EJB Example
// Enterprise bean class public 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

51

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

52

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

53

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

54

Questions

Copyright 2002 Paulo Merson

55

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? JeanChristophe Cimetiere The State of The J2EE Application Server Market. Floyd Marinescu

Copyright 2002 Paulo Merson

56

Sources & Resources


The J2EE Tutorial. Sun Microsystems IBM WebSphere Application Server manuals BEA WebLogic Server manuals www.java.sun.com/j2ee www.theserverside.com

Copyright 2002 Paulo Merson

57

También podría gustarte