You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Giuseppe Sorce <so...@eng.it> on 2002/11/11 14:53:26 UTC

Problem in Tomcat Servlet calling JBoss EJB running on a different machine

Scenario:

***** Client Development Machine
Win2K prof.
NetBeans IDE 3.4
Tomcat 4.0 (integrated in NetBeans)
JDK 1.3.1

***** Server EJB Container
Linux RedHat 7.1
JDK 1.3.1
jboss-3.0.3_tomcat-4.1.12

***** Test Application
Very simple, look at http://www.adwanted.com/jboss/ for details

- Only 1 Stateless Session Bean (com.web_tomorrow.interest.InterestBean),
implementing just a simple method:

  public double calculateCompoundInterest(double principle,
    double rate, double periods) {
    System.out.println ("Someone called `calculateCompoundInterest!'");
    return principle * Math.pow(1+rate, periods) - principle;
  }

- Compiled and deployed using NetBeans (very useful the JAR Recipe!). Copied
the jar file on the Linux server. All works fine!

- Tested with a simple Java Client:

   System.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
   System.setProperty("java.naming.provider.url",  "ewlpasrv1");
   InitialContext jndiContext = new InitialContext();
   Object ref  = jndiContext.lookup("examples/Interest");
   InterestHome home = (InterestHome)
   PortableRemoteObject.narrow (ref, InterestHome.class);
   Interest interest = home.create();
  System.out.println
   ("Interest on 1000 units, at 10% per period, compounded over 2 periods
is:");
  System.out.println (interest.calculateCompoundInterest (1000, 0.10, 2));

No error reported.

***** PROBLEM

We made a simple Servlet (look at the bottom of this document...), similar
to the client.
- we created a Web Module using netbeans
- we copied jboss client jar files under (...)\tomcat404\lib
- we copied the app's deployment jar file under (...)\WEB-INF\lib
Running the servlet from NetBeans IDE (using internal Tomcat), here is the
result:

Servlet interface to EJB
Calling EJB...
Got context
Got reference
Got Home Interface
java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:
java.net.SocketException: Connection aborted by peer: JVM_recv in socket
input stream read
(the full error stack is listed at the end of this mail).


Any idea?
Thanx in advance
Giuseppe Sorce
ITALY

----------------- Error -------------------------
Apache Tomcat/4.0.4 - HTTP Status 500 - Internal Server Error
type Exception report
message Internal Server Error
description The server encountered an internal error (Internal Server Error)
that prevented it from fulfilling this request.
exception
java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:
 java.net.SocketException: Connection reset by peer: JVM_recv in socket
input stream read
 java.net.SocketException: Connection reset by peer: JVM_recv in socket
input stream read
 at java.net.SocketInputStream.socketRead(Native Method)
 at java.net.SocketInputStream.read(SocketInputStream.java:86)
 at java.io.BufferedInputStream.fill(BufferedInputStream.java:186)
 at java.io.BufferedInputStream.read(BufferedInputStream.java:204)
 at java.io.ObjectInputStream.peekCode(ObjectInputStream.java:1550)
 at
java.io.ObjectInputStream.skipToEndOfBlockData(ObjectInputStream.java:1480)
 at
java.io.ObjectInputStream.inputClassDescriptor(ObjectInputStream.java:927)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:366)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
 at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1186)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
 at java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:2263)
 at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:519)
 at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1412)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
 at java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:2263)
 at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:519)
 at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1412)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
 at
sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:212)
 at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122)
 at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source)
 at
org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProx
y.java:129)
 at
org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:108)
 at
org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:77
)
 at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:80)
 at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:198)
 at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
 at $Proxy0.create(Unknown Source)
 at org.apache.jsp.index$jsp._jspService(index$jsp.java:87)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.netbeans.modules.tomcat.tomcat40.runtime.IDEJspServlet$JspServletWrapper
.service(IDEJspServlet.java:173)
 at
org.netbeans.modules.tomcat.tomcat40.runtime.IDEJspServlet.serviceJspFile(ID
EJspServlet.java:246)
 at
org.netbeans.modules.tomcat.tomcat40.runtime.IDEJspServlet.service(IDEJspSer
vlet.java:339)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
 at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
 at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:190)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
 at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
 at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
 at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
 at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:174)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1027)
 at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125
)
 at java.lang.Thread.run(Thread.java:484)


----------------- ejb Servlet --------------------
/**
 * This Servlet provides a user interface to an Enterprise Java Bean.
 * The example EJB described in the jBoss documentation at
 * <http://jboss.org/> calculates compound interest. This servlet
 * is based on Hello.java, distributed with Apache JServ.
 * This servlet will call the Interest EJB, passing it a few
 * parameters. The EJB will return a result, which the servlet
 * will display to the Web client.
 */
import java.io.*;

// Servlet stuff
import javax.servlet.*;
import javax.servlet.http.*;

// EJB stuff
import javax.naming.*;
import java.util.Hashtable;
import javax.rmi.PortableRemoteObject;
import com.web_tomorrow.interest.*;


/public class ejb extends HttpServlet {
  /**
   * Handle the GET and HEAD methods by building a simple web page.
   * HEAD is just like GET, except that the server returns only the
   * headers (including content length) not the body we write.
   */
  public void doGet (HttpServletRequest request,
             HttpServletResponse response)
    throws ServletException, IOException {

    PrintWriter out;
    String title = "Servlet interface to EJB";

    // set content type and other response header fields first
    response.setContentType("text/html");

    // then write the data of the response
    out = response.getWriter();

    out.println("<HTML><HEAD><TITLE>");
    out.println(title);
    out.println("</TITLE></HEAD><BODY bgcolor=\"#FFFFFF\">");
    out.println("<H1>" + title + "</H1>");
    out.println("<H2>Calling EJB...</H2>");

  /**
  This simple servlet tests the `Interest' Enterprise JavaBean which is
  implemented in the package `com.web_tomorrow.interest'. For this to
  work, the Bean must be deployed on an EJB server.
  <P>
  <B>IMPORTANT</B> If you want to test this in a real client-server
  configuration, this class goes on the client; the URL of the naming
  provider specifed in the class must be changed from `localhost:1099'
  to the URL of the naming service on the server
  */

    // Set up the naming provider; this may not always be necessary,
depending
    // on how your Java system is configured.
    System.setProperty("java.naming.factory.initial",
      "org.jnp.interfaces.NamingContextFactory");
    System.setProperty("java.naming.provider.url",
      "ewlpasrv1");

    // Enclosing the whole process in a single `try' block is not an ideal
way
    // to do exception handling, but I don't want to clutter the program up
    // with catch blocks
    try {
      // Get a naming context
         InitialContext jndiContext = new InitialContext();
      out.println("Got context");

      // Get a reference to the Interest Bean
      Object ref  = jndiContext.lookup("examples/Interest");
      out.println("Got reference");

      // Get a reference from this to the Bean's Home interface
      InterestHome home = (InterestHome)
        PortableRemoteObject.narrow (ref, InterestHome.class);
      out.println("Got Home Interface");

      // Create an Interest object from the Home interface
      Interest interest = home.create();
      out.println("Got Interest Object from the Home interface");

      // call the calculateCompoundInterest() method to do the calculation
      out.println ("Interest on 1000 units, at 10% per period, " +
        "compounded over 2 periods is:");
      out.println (interest.calculateCompoundInterest (1000, 0.10, 2));
    } catch(Exception e) {
      out.println(e.toString());
    }

    out.println("</BODY></HTML>");
    out.close();
  }
}


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Problem in Tomcat Servlet calling JBoss EJB running on a different machine

Posted by Giuseppe Sorce <so...@eng.it>.
Thanks Anthony,
I tried to use "-nonaming" swhitch, but, it seems that tomcat don't
recognize this argument. Details:

 - Apache Tomcat/4.1.12 running on a Win2K Server box

 - From the command line:
D:\jakarta-tomcat-4.1.12\bin> startup.bat -nonaming

Then another DOS window appears and then quickly disappears ... tomcat isn't
running.
Any idea?
Thanx in advance
Giuseppe Sorce
ITALY



----- Original Message -----
From: "Anthony Geoghegan" <an...@eircom.net>
To: "Tomcat Users List" <to...@jakarta.apache.org>
Sent: Monday, November 11, 2002 3:16 PM
Subject: Re: Problem in Tomcat Servlet calling JBoss EJB running on a
different machine


> Tomcat -nonaming switch used?
> The Tomcat JNDI server conflicts with JBOSS's
> you have to switch it off from the command line.
>
> Best Regards,
> Anthony Geoghegan.
> J2EE Developer
> CPS Ireland Ltd.



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Problem in Tomcat Servlet calling JBoss EJB running on a different machine

Posted by Anthony Geoghegan <an...@eircom.net>.
Tomcat -nonaming switch used?
The Tomcat JNDI server conflicts with JBOSS's
you have to switch it off from the command line.

Best Regards,
Anthony Geoghegan.
J2EE Developer
CPS Ireland Ltd.
----- Original Message -----
From: "Giuseppe Sorce" <so...@eng.it>
To: "Tomcat Users List" <to...@jakarta.apache.org>
Sent: Monday, November 11, 2002 1:53 PM
Subject: Problem in Tomcat Servlet calling JBoss EJB running on a different
machine


> Scenario:
>
> ***** Client Development Machine
> Win2K prof.
> NetBeans IDE 3.4
> Tomcat 4.0 (integrated in NetBeans)
> JDK 1.3.1
>
> ***** Server EJB Container
> Linux RedHat 7.1
> JDK 1.3.1
> jboss-3.0.3_tomcat-4.1.12
>
> ***** Test Application
> Very simple, look at http://www.adwanted.com/jboss/ for details
>
> - Only 1 Stateless Session Bean (com.web_tomorrow.interest.InterestBean),
> implementing just a simple method:
>
>   public double calculateCompoundInterest(double principle,
>     double rate, double periods) {
>     System.out.println ("Someone called `calculateCompoundInterest!'");
>     return principle * Math.pow(1+rate, periods) - principle;
>   }
>
> - Compiled and deployed using NetBeans (very useful the JAR Recipe!).
Copied
> the jar file on the Linux server. All works fine!
>
> - Tested with a simple Java Client:
>
>    System.setProperty("java.naming.factory.initial",
> "org.jnp.interfaces.NamingContextFactory");
>    System.setProperty("java.naming.provider.url",  "ewlpasrv1");
>    InitialContext jndiContext = new InitialContext();
>    Object ref  = jndiContext.lookup("examples/Interest");
>    InterestHome home = (InterestHome)
>    PortableRemoteObject.narrow (ref, InterestHome.class);
>    Interest interest = home.create();
>   System.out.println
>    ("Interest on 1000 units, at 10% per period, compounded over 2 periods
> is:");
>   System.out.println (interest.calculateCompoundInterest (1000, 0.10, 2));
>
> No error reported.
>
> ***** PROBLEM
>
> We made a simple Servlet (look at the bottom of this document...), similar
> to the client.
> - we created a Web Module using netbeans
> - we copied jboss client jar files under (...)\tomcat404\lib
> - we copied the app's deployment jar file under (...)\WEB-INF\lib
> Running the servlet from NetBeans IDE (using internal Tomcat), here is the
> result:
>
> Servlet interface to EJB
> Calling EJB...
> Got context
> Got reference
> Got Home Interface
> java.rmi.UnmarshalException: Error unmarshaling return; nested exception
is:
> java.net.SocketException: Connection aborted by peer: JVM_recv in socket
> input stream read
> (the full error stack is listed at the end of this mail).
>
>
> Any idea?
> Thanx in advance
> Giuseppe Sorce
> ITALY
>
> ----------------- Error -------------------------
> Apache Tomcat/4.0.4 - HTTP Status 500 - Internal Server Error
> type Exception report
> message Internal Server Error
> description The server encountered an internal error (Internal Server
Error)
> that prevented it from fulfilling this request.
> exception
> java.rmi.UnmarshalException: Error unmarshaling return; nested exception
is:
>  java.net.SocketException: Connection reset by peer: JVM_recv in socket
> input stream read
>  java.net.SocketException: Connection reset by peer: JVM_recv in socket
> input stream read
>  at java.net.SocketInputStream.socketRead(Native Method)
>  at java.net.SocketInputStream.read(SocketInputStream.java:86)
>  at java.io.BufferedInputStream.fill(BufferedInputStream.java:186)
>  at java.io.BufferedInputStream.read(BufferedInputStream.java:204)
>  at java.io.ObjectInputStream.peekCode(ObjectInputStream.java:1550)
>  at
>
java.io.ObjectInputStream.skipToEndOfBlockData(ObjectInputStream.java:1480)
>  at
> java.io.ObjectInputStream.inputClassDescriptor(ObjectInputStream.java:927)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:366)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
>  at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1186)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
>  at
java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:2263)
>  at
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:519)
>  at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1412)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
>  at
java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:2263)
>  at
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:519)
>  at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1412)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
>  at
> sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:212)
>  at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122)
>  at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown
Source)
>  at
>
org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProx
> y.java:129)
>  at
>
org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:108)
>  at
>
org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:77
> )
>  at
org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:80)
>  at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:198)
>  at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
>  at $Proxy0.create(Unknown Source)
>  at org.apache.jsp.index$jsp._jspService(index$jsp.java:87)
>  at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>  at
>
org.netbeans.modules.tomcat.tomcat40.runtime.IDEJspServlet$JspServletWrapper
> .service(IDEJspServlet.java:173)
>  at
>
org.netbeans.modules.tomcat.tomcat40.runtime.IDEJspServlet.serviceJspFile(ID
> EJspServlet.java:246)
>  at
>
org.netbeans.modules.tomcat.tomcat40.runtime.IDEJspServlet.service(IDEJspSer
> vlet.java:339)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>  at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
> FilterChain.java:247)
>  at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
> ain.java:193)
>  at
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
> va:243)
>  at
>
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>  at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>  at
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
> va:190)
>  at
>
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>  at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>  at
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
>  at
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
> )
>  at
>
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>  at
>
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
> java:170)
>  at
>
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
>  at
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
> )
>  at
>
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
>  at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
>  at
>
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
>  at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>  at
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
> :174)
>  at
>
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>  at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>  at
>
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
> 1027)
>  at
>
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125
> )
>  at java.lang.Thread.run(Thread.java:484)
>
>
> ----------------- ejb Servlet --------------------
> /**
>  * This Servlet provides a user interface to an Enterprise Java Bean.
>  * The example EJB described in the jBoss documentation at
>  * <http://jboss.org/> calculates compound interest. This servlet
>  * is based on Hello.java, distributed with Apache JServ.
>  * This servlet will call the Interest EJB, passing it a few
>  * parameters. The EJB will return a result, which the servlet
>  * will display to the Web client.
>  */
> import java.io.*;
>
> // Servlet stuff
> import javax.servlet.*;
> import javax.servlet.http.*;
>
> // EJB stuff
> import javax.naming.*;
> import java.util.Hashtable;
> import javax.rmi.PortableRemoteObject;
> import com.web_tomorrow.interest.*;
>
>
> /public class ejb extends HttpServlet {
>   /**
>    * Handle the GET and HEAD methods by building a simple web page.
>    * HEAD is just like GET, except that the server returns only the
>    * headers (including content length) not the body we write.
>    */
>   public void doGet (HttpServletRequest request,
>              HttpServletResponse response)
>     throws ServletException, IOException {
>
>     PrintWriter out;
>     String title = "Servlet interface to EJB";
>
>     // set content type and other response header fields first
>     response.setContentType("text/html");
>
>     // then write the data of the response
>     out = response.getWriter();
>
>     out.println("<HTML><HEAD><TITLE>");
>     out.println(title);
>     out.println("</TITLE></HEAD><BODY bgcolor=\"#FFFFFF\">");
>     out.println("<H1>" + title + "</H1>");
>     out.println("<H2>Calling EJB...</H2>");
>
>   /**
>   This simple servlet tests the `Interest' Enterprise JavaBean which is
>   implemented in the package `com.web_tomorrow.interest'. For this to
>   work, the Bean must be deployed on an EJB server.
>   <P>
>   <B>IMPORTANT</B> If you want to test this in a real client-server
>   configuration, this class goes on the client; the URL of the naming
>   provider specifed in the class must be changed from `localhost:1099'
>   to the URL of the naming service on the server
>   */
>
>     // Set up the naming provider; this may not always be necessary,
> depending
>     // on how your Java system is configured.
>     System.setProperty("java.naming.factory.initial",
>       "org.jnp.interfaces.NamingContextFactory");
>     System.setProperty("java.naming.provider.url",
>       "ewlpasrv1");
>
>     // Enclosing the whole process in a single `try' block is not an ideal
> way
>     // to do exception handling, but I don't want to clutter the program
up
>     // with catch blocks
>     try {
>       // Get a naming context
>          InitialContext jndiContext = new InitialContext();
>       out.println("Got context");
>
>       // Get a reference to the Interest Bean
>       Object ref  = jndiContext.lookup("examples/Interest");
>       out.println("Got reference");
>
>       // Get a reference from this to the Bean's Home interface
>       InterestHome home = (InterestHome)
>         PortableRemoteObject.narrow (ref, InterestHome.class);
>       out.println("Got Home Interface");
>
>       // Create an Interest object from the Home interface
>       Interest interest = home.create();
>       out.println("Got Interest Object from the Home interface");
>
>       // call the calculateCompoundInterest() method to do the calculation
>       out.println ("Interest on 1000 units, at 10% per period, " +
>         "compounded over 2 periods is:");
>       out.println (interest.calculateCompoundInterest (1000, 0.10, 2));
>     } catch(Exception e) {
>       out.println(e.toString());
>     }
>
>     out.println("</BODY></HTML>");
>     out.close();
>   }
> }
>
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
>
>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>