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" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <[EMAIL PROTECTED]>
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:
<mailto:tomcat-user-unsubscribe@;jakarta.apache.org>
> For additional commands, e-mail:
<mailto:tomcat-user-help@;jakarta.apache.org>
>
>


--
To unsubscribe, e-mail:   <mailto:tomcat-user-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-user-help@;jakarta.apache.org>

Reply via email to