Creating the Web Client

The web client is contained in the JSP page <INSTALL>/j2eetutorial14/examples/ejb/converter/web/index.jsp. A JSP page is a text-based document that contains JSP elements, which construct dynamic content, and static template data, which can be expressed in any text-based format such as HTML, WML, and XML.

Coding the Web Client

The statements (in bold in the following code) for locating the home interface, creating an enterprise bean instance, and invoking a business method are nearly identical to those of the application client. The parameter of the lookup method is the only difference; the motivation for using a different name is discussed in Mapping the Enterprise Bean References.

The classes needed by the client are declared using a JSP page directive (enclosed within the <%@ %> characters). Because locating the home interface and creating the enterprise bean are performed only once, this code appears in a JSP declaration (enclosed within the <%! %> characters) that contains the initialization method, jspInit, of the JSP page. The declaration is followed by standard HTML markup for creating a form that contains an input field. A scriptlet (enclosed within the <% %> characters) retrieves a parameter from the request and converts it to a BigDecimal object. Finally, JSP expressions (enclosed within <%= %> characters) invoke the enterprise bean's business methods and insert the result into the stream of data returned to the client.

<%@ page import="converter.Converter, converter.ConverterHome, 
java.math.*, javax.ejb.*, javax.naming.*, 
javax.rmi.PortableRemoteObject, java.rmi.RemoteException" %>
<%!
  private Converter converter = null;
  public void jspInit() {
    try {
      InitialContext ic = new InitialContext();
      Object objRef = ic.lookup("
        java:comp/env/ejb/TheConverter");
      ConverterHome home =
      (ConverterHome)PortableRemoteObject.narrow(
      objRef, ConverterHome.class);
      converter = home.create();
    } catch (RemoteException ex) {
      ...
    } 
  }
  ...
%>
<html>
<head>
   <title>Converter</title>
</head>

<body bgcolor="white">
<h1><center>Converter</center></h1>
<hr>
<p>Enter an amount to convert:</p>
<form method="get">
<input type="text" name="amount" size="25">
<br>
<p>
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</form>
<%
  String amount = request.getParameter("amount");
  if ( amount != null && amount.length() > 0 ) {
    BigDecimal d = new BigDecimal (amount);
%>
  <p><%= amount %> dollars are  
    <%= converter.dollarToYen(d) %>  Yen.
  <p><%= amount %> Yen are 
    <%= converter.yenToEuro(d) %>  Euro.
<%
   }
%>
</body>
</html> 

Compiling the Web Client

The Application Server automatically compiles web clients that are JSP pages. If the web client were a servlet, you would have to compile it.

Packaging the Web Client

To package a web client, you run the New Web Component wizard of the deploytool utility. During this process the wizard performs the following tasks.

To start the New Web Component wizard, select FileRight ArrowNewRight ArrowWeb Component. The wizard displays the following dialog boxes.

  1. Introduction dialog box
    1. Read the explanatory text for an overview of the wizard's features.
    2. Click Next.
  2. WAR File dialog box
    1. Select the button labeled Create New WAR Module in Application.
    2. In the combo box below this button, select ConverterApp.
    3. In the WAR Name field, enter ConverterWAR.
    4. Click Edit Contents.
    5. In the tree under Available Files, locate this directory:
    6. <INSTALL>/j2eetutorial14/examples/ejb/converter/web/

    7. Select index.jsp.
    8. Click Add.
    9. Click OK.
    10. Click Next.
  3. Choose Component Type dialog box
    1. Select the JSP Page button.
    2. Click Next.
  4. Component General Properties dialog box
    1. In the JSP Filename combo box, select index.jsp.
    2. Click Finish.

Specifying the Web Client's Enterprise Bean Reference

When it invokes the lookup method, the web client refers to the home of an enterprise bean:

Object objRef = ic.lookup("java:comp/env/ejb/TheConverter"); 

You specify this reference as follows:

  1. In the tree, select ConverterWAR.
  2. Select the EJB Ref's tab.
  3. Click Add.
  4. In the Coded Name field, enter ejb/TheConverter.
  5. In the EJB Type field, select Session.
  6. In the Interfaces field, select Remote.
  7. In the Home Interface field, enter converter.ConverterHome.
  8. In the Local/Remote Interface field, enter converter.Converter.
  9. In the JNDI Name field, select ConverterBean.
  10. Click OK.