550 likes | 756 Views
J2EE . Agenda. Application servers What is J2EE? Main component types Application Scenarios J2EE APIs and Services EJB – a closer look Examples. mainframe. terminals. terminals. 1. Application Servers. In the beginning, there was darkness and cold. Then, ….
E N D
Agenda • Application servers • What is J2EE? • Main component types • Application Scenarios • J2EE APIs and Services • EJB – a closer look • Examples
mainframe terminals terminals 1. Application Servers • In the beginning, there was darkness and cold. Then, … Centralized, non-distributed
Application Servers • In the 90’s, systems should be client-server
Application Servers • Today, enterprise applications use the multi-tier model
Application Servers • “Multi-tier applications” have several independent components • An application server provides the infrastructure and services to run such applications
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.)
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)
Web Server and Application Server App Server 1 Internet Browser Web Server(HTTP Server) HTTP(S) App Server 2
2. What is J2EE? • It is a public specification that embodies several technologies • Current version is 1.4 • J2EE defines a model for developing multi-tier, web based, enterprise applications with distributed components
J2EE Benefits • High availability • Scalability • Integration with existing systems • Freedom to choose vendors of application servers, tools, components • Multi-platform
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
Main technologies • JavaServer Pages (JSP) • Servlet • Enterprise JavaBeans (EJB) • JSPs, servlets and EJBs are application components
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
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
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
J2EE Application Scenarios • Multi-tier typical application
J2EE Application Scenarios • Stand-alone client
J2EE Application Scenarios • Web-centric application
J2EE Application Scenarios • Business-to-business
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
JMS • Point-to-point • Destination is “queue”
JMS • Publish-subscribe • Destination is “topic”
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.
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
J2EE Services and APIs • Security • Java Authentication and Authorization Service (JAAS) is the 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
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
J2EE Services and APIs • JDBC • JavaMail • Java API for XML Parsing (JAXP) • Web services APIs
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
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
EJB at runtime Client can be local or remote
Types of EJB New!
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
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
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
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
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
4. Examples • JSP example • Servlet example • EJB example
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"> </td> <td width="550"> <h1>My name is Duke. What's yours?</h1> </td> </tr>
JSP example <tr> <td width="150" </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>
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>"); } }
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; }
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; }
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(); }
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(); }