J2EE - Practical Overview


Published on

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • J2EE - Practical Overview

    1. 1. J2EE Overview Svetlin Nakov Sofia University “St. Kliment Ohridski” E-Mail: [email_address]
    2. 2. Agenda <ul><li>Introduction to J2EE </li></ul><ul><li>Explain the major technologies within the J2EE designation </li></ul><ul><li>J2EE applications </li></ul><ul><li>J2EE servers </li></ul>
    3. 3. The Java 2 Platform <ul><li>Platform introduced June, 1999 </li></ul><ul><li>J2SE – Java 2 Standard Edition </li></ul><ul><ul><li>Java for the desktop / workstation </li></ul></ul><ul><ul><li>http://java.sun.com/j2se </li></ul></ul><ul><li>J2ME – Java 2 Micro Edition </li></ul><ul><ul><li>Java for the consumer device </li></ul></ul><ul><ul><li>http://java.sun.com/j2me </li></ul></ul><ul><li>J2EE - Java 2 Enterprise Edition </li></ul><ul><ul><li>Java for the server </li></ul></ul><ul><ul><li>http://java.sun.com/j2ee </li></ul></ul>
    4. 4. The Java 2 Platform http://java.sun.com/java2/
    5. 5. J2EE Technologies <ul><li>Java Servlets </li></ul><ul><li>JSP </li></ul><ul><li>EJB </li></ul><ul><li>JMS </li></ul><ul><li>JDBC </li></ul><ul><li>JNDI </li></ul><ul><li>JTA / JTS </li></ul><ul><li>JavaMail </li></ul><ul><li>JAAS </li></ul><ul><li>XML </li></ul><ul><li>… </li></ul>
    6. 6. J2EE Components http://java.sun.com/j2ee/overview3.html
    7. 7. Java Servlets <ul><li>Servlets are the Java platform technology of choice for extending and enhancing web servers. </li></ul><ul><li>Servlets provide a component-based, platform-independent method for building web-based applications, without the performance limitations of CGI programs. </li></ul><ul><li>http://java.sun.com/products/servlets/index.html </li></ul>
    8. 8. Java Servlets <ul><li>Servlets have access to the entire family of Java APIs, including the JDBC TM API to access enterprise databases. </li></ul><ul><li>Servlets can also access a library of HTTP-specific calls and receive all the benefits of the mature Java language, including portability, performance, reusability, and crash protection </li></ul><ul><li>http:// java.sun.com/products/servlets/index.html </li></ul>
    9. 9. Anatomy of a Servlet <ul><li>init() – the init() function is called when the servlet is initialized by the server. This often happens on the first doGet() or doPut() call of the servlet. </li></ul><ul><li>destroy() – this function is called when the servlet is being destroyed by the server, typically when the server process is being stopped. </li></ul>http://java.sun.com/docs/books/tutorial/servlets/lifecycle/index.html
    10. 10. Anatomy of a Servlet <ul><li>doGet() – the doGet() function is called when the servlet is called via an HTTP GET. </li></ul><ul><li>doPost() – the doPost() function is called when the servlet is called via an HTTP POST. </li></ul><ul><ul><li>POSTs are a good way to get input from HTML forms </li></ul></ul>http://java.sun.com/docs/books/tutorial/servlets/lifecycle/index.html
    11. 11. Anatomy of a Servlet <ul><li>HTTPServletRequest object </li></ul><ul><ul><li>Information about an HTTP request </li></ul></ul><ul><ul><ul><li>Headers </li></ul></ul></ul><ul><ul><ul><li>Query String </li></ul></ul></ul><ul><ul><ul><li>Session </li></ul></ul></ul><ul><ul><ul><li>Cookies </li></ul></ul></ul><ul><li>HTTPServletResponse object </li></ul><ul><ul><li>Used for formatting an HTTP response </li></ul></ul><ul><ul><ul><li>Headers </li></ul></ul></ul><ul><ul><ul><li>Status codes </li></ul></ul></ul><ul><ul><ul><li>Cookies </li></ul></ul></ul>
    12. 12. Sample Servlet <ul><li>import java.io.*; //Apache Tomcat sample code </li></ul><ul><li>import javax.servlet.*; </li></ul><ul><li>import javax.servlet.http.*; </li></ul><ul><li>public class HelloWorld extends HttpServlet </li></ul><ul><li>{ </li></ul><ul><li> public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException </li></ul><ul><li>{ </li></ul><ul><li>response.setContentType(&quot; text/html &quot;); </li></ul><ul><li>PrintWriter out = response.getWriter(); out.println(&quot; <html> &quot;); out.println(&quot; <body> &quot;); </li></ul><ul><li>out.println(&quot; <head> &quot;); </li></ul><ul><li>out.println(&quot; <title>Hello World!</title> &quot;); </li></ul><ul><li>out.println(&quot; </head> &quot;); </li></ul><ul><li>out.println(&quot; <body> &quot;); </li></ul><ul><li>out.println(&quot; <h1>Hello World!</h1> &quot;); </li></ul><ul><li>out.println(&quot; </body> &quot;); </li></ul><ul><li>out.println(&quot; </html> &quot;); </li></ul><ul><li>} </li></ul><ul><li> } </li></ul>
    13. 13. JSP – JavaServer Pages <ul><li>JavaServer Pages technology uses XML-like tags and scriptlets written in the Java programming language to encapsulate the logic that generates the content for the page. </li></ul><ul><li>Any and all formatting (HTML or XML) tags are passed directly back to the response page. </li></ul><ul><li>By separating the page logic from its design and display and supporting a reusable component-based design, JSP technology makes it faster and easier than ever to build web-based applications. </li></ul><ul><li>http:// java.sun.com/products/jsp/index.html </li></ul>
    14. 14. Sample JSP <ul><li><html> <!- Apache Tomcat Samples -> </li></ul><ul><li><!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved.--> </li></ul><ul><li><body bgcolor=&quot;white&quot;> </li></ul><ul><li><jsp:useBean id='clock' scope='page' class='dates.JspCalendar' type=&quot;dates.JspCalendar&quot; /> </li></ul><ul><li><font size=4><ul> </li></ul><ul><li><li> Day of month: is <jsp:getProperty name=&quot;clock&quot; property=&quot;dayOfMonth&quot;/> </li></ul><ul><li><li> Year: is <jsp:getProperty name=&quot;clock&quot; property=&quot;year&quot;/> </li></ul><ul><li><li> Month: is <jsp:getProperty name=&quot;clock&quot; property=&quot;month&quot;/> </li></ul><ul><li><li> Time: is <jsp:getProperty name=&quot;clock&quot; property=&quot;time&quot;/> </li></ul><ul><li><li> Date: is <jsp:getProperty name=&quot;clock&quot; property=&quot;date&quot;/> </li></ul><ul><li><li> Day: is <jsp:getProperty name=&quot;clock&quot; property=&quot;day&quot;/> </li></ul><ul><li><li> Day Of Year: is <jsp:getProperty name=&quot;clock&quot; property=&quot;dayOfYear&quot;/> </li></ul><ul><li><li> Week Of Year: is <jsp:getProperty name=&quot;clock&quot; property=&quot;weekOfYear&quot;/> </li></ul><ul><li><li> era: is <jsp:getProperty name=&quot;clock&quot; property=&quot;era&quot;/> </li></ul><ul><li><li> DST Offset: is <jsp:getProperty name=&quot;clock&quot; property=&quot;DSTOffset&quot;/> </li></ul><ul><li><li> Zone Offset: is <jsp:getProperty name=&quot;clock&quot; property=&quot;zoneOffset&quot;/> </li></ul><ul><li></ul> </li></ul><ul><li></font> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
    15. 15. EJB – Enterprise Java Beans <ul><li>Enterprise JavaBeans TM is the server-side component architecture for the J2EE TM platform . </li></ul><ul><li>EJB TM enables rapid and simplified development of distributed, transactional, secure and portable Java applications. </li></ul><ul><li>Current Specification: 2.1 </li></ul><ul><li>http://java.sun.com/products/ejb/index.html </li></ul>
    16. 16. EJB – Enterprise Java Beans <ul><li>Enterprise Java Beans are components that are deployed into containers </li></ul><ul><li>The container provides services </li></ul><ul><ul><li>Loading / Initialization </li></ul></ul><ul><ul><li>Transactions </li></ul></ul><ul><ul><li>Persistence </li></ul></ul><ul><ul><li>Communication with EJB clients </li></ul></ul><ul><ul><li>Enterprise Naming Context (JNDI name space) </li></ul></ul>
    17. 17. Anatomy of an EJB <ul><li>Remote Interface </li></ul><ul><ul><li>Methods that can be accessed by the outside world. </li></ul></ul><ul><ul><li>Extends javax.ejb.EJBObject </li></ul></ul><ul><li>Remote Home Interface </li></ul><ul><ul><li>Life-cycle methods (create, findByPrimaryKey) </li></ul></ul><ul><ul><li>Extends javax.ejb.EJBHome which extends java.rmi.Remote </li></ul></ul><ul><li>Bean class </li></ul><ul><ul><li>The class performing the actual business process </li></ul></ul><ul><ul><li>Implements an interface based on type of bean (EntityBean, SessionBean, MessageDrivenBean) </li></ul></ul>
    18. 18. Anatomy of an EJB <ul><li>EJB 2.0 New Interfaces </li></ul><ul><ul><li>New Interfaces allow bean to bean method calls within the same container </li></ul></ul><ul><ul><li>Local Interface </li></ul></ul><ul><ul><ul><li>Similar to the remote interface, but without RMI </li></ul></ul></ul><ul><ul><ul><li>Extends javax.ejb.EJBLocalObject </li></ul></ul></ul><ul><ul><li>Local Home Interface </li></ul></ul><ul><ul><ul><li>Similar to the remote home interface, but without RMI </li></ul></ul></ul><ul><ul><ul><li>Extends javax.ejb.EJBLocalHome </li></ul></ul></ul>
    19. 19. Client / EJB Relationship <ul><li>How does a client application (Java class) utilize EJBs? </li></ul><ul><ul><li>Lookup - JNDI ENC </li></ul></ul><ul><ul><li>Network protocol - RMI </li></ul></ul><ul><ul><li>EJB container creates object with RemoteHome and Home interfaces – this object passes calls to the bean class </li></ul></ul>
    20. 20. EJB – Enterprise Java Beans <ul><li>Entity Beans </li></ul><ul><li>Session Beans </li></ul><ul><li>Message Driven Beans </li></ul><ul><ul><li>New in EJB 2.0 </li></ul></ul>
    21. 21. EJB – Entity Beans <ul><li>Entity beans are classes that map to individual entities – typically, an Entity bean references a row in a database table, providing an object representation of that database object. </li></ul><ul><ul><li>For example, an entity bean could represent a customer, and changing the values in that entity bean would cause updates to that database row </li></ul></ul><ul><li>Entity beans provide an abstraction layer so that working with the entity is not specific to the storage mechanism for that entity. </li></ul>
    22. 22. Entity Beans - Persistence <ul><li>Container Managed Persistence (CMP) </li></ul><ul><ul><li>The EJB container automatically persists the EJB objects, usually to a relational database where each type of object is represented as a table, and each instance of the object is a row in that table </li></ul></ul><ul><li>Bean Managed Persistence (BMP) </li></ul><ul><ul><li>The EJB container calls bean methods when it is appropriate for the bean to load, save or update data, enforcing transactions without transaction code written by the bean developer </li></ul></ul>
    23. 23. EJB – Session Beans <ul><li>Session beans perform work for a client application </li></ul><ul><ul><li>For example, a session bean could charge a credit card for a specific transaction. </li></ul></ul>
    24. 24. Session Beans – State <ul><li>Stateful – A stateful bean maintains a conversational state with a client. The client perceives that it is only talking to one bean, and that bean maintains information between calls </li></ul><ul><li>Stateless – A stateless bean maintains no client information between method calls – the container can substitute beans as necessary between method calls </li></ul>
    25. 25. EJB – Session Bean Example <ul><li>package org.jboss.docs.interest; </li></ul><ul><li>import javax.ejb.EJBObject; </li></ul><ul><li>import java.rmi.RemoteException; </li></ul><ul><li>/** This interface defines the `Remote' interface for the `Interest' EJB. Its single method is the only method exposed to the outside world. The class InterestBean implements the method. */ </li></ul><ul><li>public interface Interest extends EJBObject </li></ul><ul><li>{ </li></ul><ul><li>/** Calculates the compound interest on the sum `principle', with interest rate per period `rate' over `periods' time periods. This method also prints a message to standard output; this is picked up by the EJB server and logged. In this way we can demonstrate that the method is actually being executed on the server, rather than the client. */ </li></ul><ul><li>public double calculateCompoundInterest(double principle, double rate, double periods) throws RemoteException; </li></ul><ul><li>} </li></ul>
    26. 26. EJB – Session Bean Example package org.jboss.docs.interest; import java.io.Serializable; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; /** This interface defines the 'home' interface for the 'Interest' EJB. */ public interface InterestHome extends EJBHome { /** Creates an instance of the `InterestBean' class on the server, and returns a remote reference to an Interest interface on the client. */ Interest create() throws RemoteException, CreateException; }
    27. 27. EJB – Session Bean Example package org.jboss.docs.interest; import java.rmi.RemoteException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; /** This class contains the implementation for the 'calculateCompoundInterest' method exposed by this Bean. It includes empty method bodies for the methods prescribe by the SessionBean interface; these don't need to do anything in this simple example. */ public class InterestBean implements SessionBean { public double calculateCompoundInterest(double principle, double rate, double periods) { System.out.println(&quot;Someone called `calculateCompoundInterest!'&quot;); return principle * Math.pow(1+rate, periods) - principle; } public void ejbCreate() {} public void ejbPostCreate() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {} }
    28. 28. EJB – Session Bean Example <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <ejb-jar>      <description>JBoss Interest Sample Application</description>      <display-name>Interest EJB</display-name>      <enterprise-beans>        <session>          <ejb-name>Interest</ejb-name>          <home>org.jboss.docs.interest.InterestHome</home>          <remote>org.jboss.docs.interest.Interest</remote>          <ejb-class>org.jboss.docs.interest.InterestBean</ejb-class>          <session-type>Stateless</session-type>          <transaction-type>Bean</transaction-type>        </session>      </enterprise-beans> </ejb-jar>
    29. 29. EJB – Session Bean Example package org.jboss.docs.interest; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; class InterestClient { /** This method does all the work. It creates an instance of the Interest EJB on the EJB server, and calls its `calculateCompoundInterest()' method, then prints the result of the calculation. */ public static void main(String[] args) { try { InitialContext jndiContext = new InitialContext(); ref = jndiContext.lookup(&quot;interest/Interest&quot;); InterestHome home = (InterestHome) PortableRemoteObject.narrow(ref, InterestHome.class); Interest interest = home.create(); //Create an Interest object from the Home interface System.out.println(interest.calculateCompoundInterest(1000, 0.10, 2)); } catch(Exception e) { System.out.println(e.toString()); } } }
    30. 30. EJB – Message Beans <ul><li>Message beans are classes that receive asynchronous notification from a Java Message Service server </li></ul><ul><ul><li>For example, a message bean could be activated when vendor sends a purchase order to a JMS queue. </li></ul></ul>
    31. 31. JMS – Java Message Service <ul><li>Enterprise messaging provides a reliable, flexible service for the asynchronous exchange of critical business data and events throughout an enterprise. The JMS API adds to this a common API and provider framework that enables the development of portable, message based applications in the Java programming language. </li></ul><ul><li>http://java.sun.com/products/jms/index.html </li></ul>
    32. 32. JMS – Java Message Service JMS Queue JMS Topic
    33. 33. JMS – Java Message Service <ul><li>The JMS API in the J2EE 1.3 platform has the following new features: </li></ul><ul><ul><li>A new kind of enterprise bean, the message-driven bean, enables the asynchronous consumption of messages. </li></ul></ul><ul><ul><li>Message sends and receives can participate in Java Transaction API (JTA) transactions. </li></ul></ul><ul><li>http://java.sun.com/products/jms/index.html </li></ul>
    34. 34. JMS – Java Message Service <ul><li>Why should I use JMS? </li></ul><ul><ul><li>Loosely-coupled systems </li></ul></ul><ul><ul><ul><li>Connectionless </li></ul></ul></ul><ul><ul><ul><li>Removes dependence on client and server platform / programming language / version </li></ul></ul></ul><ul><ul><li>Publish / Subscribe metaphor </li></ul></ul><ul><ul><ul><li>Send / receive information with many, unknown clients </li></ul></ul></ul><ul><ul><li>Integration with other messaging systems </li></ul></ul><ul><ul><ul><li>IBM MQ-Series </li></ul></ul></ul><ul><ul><ul><li>Microsoft Message Queue </li></ul></ul></ul><ul><li>http://java.sun.com/products/jms/index.html </li></ul>
    35. 35. JDBC – Data Access API <ul><li>JDBC TM technology is an API that lets you access virtually any tabular data source from the Java TM programming language. </li></ul><ul><ul><li>Cross-DBMS connectivity to a wide range of SQL databases </li></ul></ul><ul><ul><li>Access to other tabular data sources, such as spreadsheets or flat files. </li></ul></ul><ul><li>http://java.sun.com/products/jdbc/index.html </li></ul>
    36. 36. JDBC – Driver Types <ul><li>Level 1 - A JDBC-ODBC bridge provides JDBC API access via one or more ODBC drivers. </li></ul><ul><li>Level 2 - A native-API partly Java technology-enabled driver converts JDBC calls into calls on the client API for Oracle, Sybase, Informix, DB2, or other DBMS. </li></ul><ul><li>Level 3 - A net-protocol fully Java technology-enabled driver translates JDBC API calls into a DBMS-independent net protocol which is then translated to a DBMS protocol by a server. </li></ul><ul><li>Level 4 - A native-protocol fully Java technology-enabled driver converts JDBC technology calls into the network protocol used by DBMSs directly. </li></ul><ul><li>http:// java.sun.com/products/jdbc/driverdesc.html </li></ul>
    37. 37. JNDI – Java Naming and Directory Interface <ul><li>JNDI is an API specified in Java tm that provides naming and directory functionality to applications written in Java. It is designed especially for Java by using Java's object model. </li></ul><ul><li>Using JNDI, Java applications can store and retrieve named Java objects of any type. </li></ul><ul><li>JNDI provides methods for performing standard directory operations, such as associating attributes with objects and searching for objects using their attributes. </li></ul><ul><li>JNDI allows Java applications to take advantage of information in a variety of existing naming and directory services, such as LDAP, NDS, DNS, and NIS(YP), and allows Java applications to coexist with legacy applications and systems. </li></ul><ul><li>http:// java.sun.com/products/jndi/overview.html </li></ul>
    38. 38. JNDI - Layers
    39. 39. JNDI – Common Uses <ul><li>JNDI ENC – “enterprise naming context” </li></ul><ul><ul><li>EJB lookup within a J2EE app server </li></ul></ul><ul><li>LDAP integration </li></ul><ul><li>Dynamic registration of services and clients </li></ul><ul><li>Peer to Peer computing </li></ul>
    40. 40. JNDI – Session Bean Example package org.jboss.docs.interest; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; class InterestClient { /** This method does all the work. It creates an instance of the Interest EJB on the EJB server, and calls its `calculateCompoundInterest()' method, then prints the result of the calculation. */ public static void main(String[] args) { try { InitialContext jndiContext = new InitialContext(); ref = jndiContext.lookup(&quot;interest/Interest&quot;); InterestHome home = (InterestHome) PortableRemoteObject.narrow(ref, InterestHome.class); Interest interest = home.create(); //Create an Interest object from the Home interface System.out.println(interest.calculateCompoundInterest(1000, 0.10, 2)); } catch(Exception e) { System.out.println(e.toString()); } } }
    41. 41. JTA / JTS – Transactions <ul><li>The Java Transaction API (JTA) and the Java Transaction Service (JTS) allow J2EE application servers to take the burden of transaction management off of the component developer. </li></ul><ul><li>Developers can define the transactional properties of Enterprise JavaBeans TM technology based components during design or deployment using declarative statements in the deployment descriptor. </li></ul><ul><li>The application server takes over the transaction management responsibilities. </li></ul><ul><li>http://java.sun.com/j2ee/transactions.html </li></ul>
    42. 42. JavaMail <ul><li>The JavaMail TM 1.2 API provides a set of abstract classes that model a mail system. </li></ul><ul><li>The API provides a platform independent and protocol independent framework to build Java technology-based mail and messaging applications. </li></ul><ul><li>J2EE contains JAF – JavaBeans Activation Framework since it is required by JavaMail </li></ul><ul><li>Supports common mail protocols </li></ul><ul><ul><li>IMAP </li></ul></ul><ul><ul><li>POP </li></ul></ul><ul><ul><li>SMTP </li></ul></ul><ul><ul><li>MIME </li></ul></ul><ul><li>http:// java.sun.com/products/javamail/index.html </li></ul>
    43. 43. JAAS – Java Authentication and Authorization Service <ul><li>Authentication of users, to reliably and securely determine who is currently executing Java code, regardless of whether the code is running as an application, an applet, a bean, or a servlet; and </li></ul><ul><li>A uthorization of users to ensure they have the access control rights (permissions) required to do the actions performed. </li></ul><ul><li>Sample authentication modules using: </li></ul><ul><ul><li>Java TM Naming and Directory Interface (JNDI) </li></ul></ul><ul><ul><li>Unix Operating Environment </li></ul></ul><ul><ul><li>Windows NT </li></ul></ul><ul><ul><li>Kerberos </li></ul></ul><ul><ul><li>Keystore </li></ul></ul><ul><li>http:// java.sun.com/products/jaas/index.html </li></ul>                 
    44. 44. XML <ul><li>J2EE 1.3 includes JAXP 1.1 support, as well as Servlet Filters and XML JSP TM documents. </li></ul><ul><li>The Java TM API for XML Processing (&quot;JAXP&quot;) supports processing of XML documents using DOM, SAX, and XSLT. </li></ul><ul><li>The portability and extensibility of both XML and Java make them the ideal choice for the flexibility and wide availability requirements of this new web. </li></ul><ul><li>http:// java.sun.com/xml/index.html </li></ul><ul><li>http:// java.sun.com/xml/jaxp/index.html </li></ul>
    45. 45. J2EE Connectors <ul><li>The J2EE Connector architecture defines a standard architecture for connecting the J2EE platform to heterogeneous EISs (Enterprise Information Systems). </li></ul><ul><li>Examples of EISs include ERP, mainframe transaction processing, database systems, and legacy applications not written in the Java programming language. </li></ul><ul><li>http://java.sun.com/j2ee/connector/index.html </li></ul>
    46. 46. J2EE Applications Architecture http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Oveview3.html
    47. 47. J2EE Deployment <ul><li>JAR – J ava AR chive </li></ul><ul><ul><li>Java class file </li></ul></ul><ul><ul><li>EJBs </li></ul></ul><ul><li>WAR - W eb AR chive </li></ul><ul><ul><li>Servlets </li></ul></ul><ul><ul><li>JSPs </li></ul></ul><ul><li>EAR - E nterprise AR chive </li></ul><ul><ul><li>Contains other JARs and WARs to form an entire application </li></ul></ul><ul><li>Deployment descriptors </li></ul><ul><ul><li>XML files (ejb-jar.xml, web.xml, application.xml) </li></ul></ul><ul><ul><li>Required for EJB JARs, WARs, EARs </li></ul></ul>
    48. 48. J2EE Servers <ul><li>Application Server </li></ul><ul><ul><li>As of Sept ’01 - MetaGroup Survey by sales $$ </li></ul></ul><ul><ul><ul><li>BEA Weblogic - 37% </li></ul></ul></ul><ul><ul><ul><li>IBM Websphere – 22% </li></ul></ul></ul><ul><ul><ul><li>Oracle – 11% </li></ul></ul></ul><ul><ul><ul><li>Iplanet – 5% </li></ul></ul></ul><ul><ul><ul><li>Other- 12% </li></ul></ul></ul><ul><ul><li>Open-source </li></ul></ul><ul><ul><ul><li>Jboss – www.jboss.org </li></ul></ul></ul><ul><ul><li>Sun’s listing of J2EE compatible servers - http://java.sun.com/j2ee/compatibility.html </li></ul></ul>
    49. 49. J2EE Servers (Web Containers) <ul><li>Servlet / JSP Servers </li></ul><ul><ul><li>Most of the commercial application servers also include servlet / JSP support </li></ul></ul><ul><ul><li>Open-Source </li></ul></ul><ul><ul><ul><li>Apache Tomcat </li></ul></ul></ul><ul><ul><ul><li>Jetty </li></ul></ul></ul><ul><ul><li>Sun’s listing of servlet / JSP servers - http:// java.sun.com/products/servlet/industry.html </li></ul></ul>
    50. 50. J2EE Development Tools <ul><li>Major IDEs support J2EE in some form </li></ul><ul><ul><li>Wizards for EJB / Servlets </li></ul></ul><ul><ul><li>Custom editors for JSP </li></ul></ul><ul><ul><li>Deployment descriptor support </li></ul></ul><ul><ul><li>Deployment support for application servers </li></ul></ul><ul><ul><li>Embedded servers for testing within IDE </li></ul></ul><ul><li>Examples J2EE-featured IDEs: </li></ul><ul><ul><li>Borland JBuilder </li></ul></ul><ul><ul><li>Oracle JDeveloper </li></ul></ul><ul><ul><li>IntelliJ IDEA </li></ul></ul><ul><ul><li>Eclipse </li></ul></ul>
    51. 51. Learning more… <ul><li>Enterprise JavaBeans – 3 rd Edition </li></ul><ul><ul><li>Richard Monson-Haefel </li></ul></ul><ul><ul><li>O’Reilly © 2001 </li></ul></ul><ul><li>JBoss documentation </li></ul><ul><ul><li>http://www.jboss.org/online-manual/HTML/index.html </li></ul></ul><ul><li>Designing Enterprise Applications with the Java 2 Platform, Enterprise Edition </li></ul><ul><ul><li>Nicholas Kassem and the Enterprise Team </li></ul></ul><ul><ul><li>Addison Wesley © 2000 </li></ul></ul><ul><li>Core Servlets and JavaServer Pages (JSP) </li></ul><ul><ul><li>Marty Hall </li></ul></ul><ul><ul><li>Prentice Hall © 2000 </li></ul></ul>
    52. 52. Learning more… <ul><li>J2EE Tutorial - http://java.sun.com/j2ee/tutorial/1_3-fcs </li></ul><ul><li>J2EE Developers Guide - http://java.sun.com/j2ee/sdk_1.2.1/techdocs/guides/ejb/html/DevGuideTOC.html </li></ul><ul><li>JNDI - http:// java.sun.com/products/jndi/tutorial / </li></ul><ul><li>JMS - http://java.sun.com/products/jms/tutorial/ </li></ul><ul><li>JDBC - http:// java.sun.com/docs/books/tutorial/jdbc </li></ul><ul><li>Servlets - http:// java.sun.com/docs/books/tutorial/servlets </li></ul><ul><li>JSP - http:// java.sun.com/products/jsp/docs.html </li></ul><ul><li>JAXP - http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial </li></ul>