Felix,

I believe this is a Tomcat bug. Tomcat seems unable to locate EJBs unless
you put a copy of your application jars and the JBoss client jars in the
$TOMCAT_HOME/lib directory as well as your app's directory.  At least this
is what I found after much digging in various mailing lists. Hope that
helps!

Frank T. Villarreal, Jr.


> -----Original Message-----
> From: Felix Munoz [mailto:[EMAIL PROTECTED]]
> Sent: Monday, June 25, 2001 4:27 PM
> To: '[EMAIL PROTECTED]'
> Subject: RE: [JBoss-user] CommunicationException in JSP to EJB
> communicati on
> 
> 
> Fred:
> 
> Sorry about that. Actually, the JNDI name "PersonBean" is 
> bound correctly.
> The file breakdown is simplified... Your suggestion is a good 
> one. However,
> I am concerned I will get the same error if I deal with a Session bean
> instead than with an Entity bean. For some reason, if I add the
> ClientJAR.jar to the Tomcat lib directory everything works fine...
> 
> Felix
> 
> -----Original Message-----
> From: Fred Loney [mailto:[EMAIL PROTECTED]]
> Sent: Monday, June 25, 2001 4:04 PM
> To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
> Subject: Re: [JBoss-user] CommunicationException in JSP to EJB
> communication
> 
> 
> The jndi name "PersonBean" is bound to a 
> com.munoz.concept.person.PersonHome
> rather than a com.munoz.ejb.person.PersonHome. Perhaps a 
> build problem?
> 
> It is preferable to insulate JSP from EJB. Wrap the Entity 
> EJB calls in a
> Session EJB. Wrap the Session EJB in a bean. Call the bean 
> from the JSP.
> Remove the EJB classes from the war. Cf. Sun J2EE blueprints 
> for examples.
> 
> --
> Fred Loney
> Enterprise Java Consultant
> Spirited Software, Inc.
> [EMAIL PROTECTED]
> 
> Felix Munoz wrote:
> 
> > Hi:
> >
> > I have been trying to implement a simple JSP to EJB 
> communication test
> from
> > an EAR file deployed on JBoss/Tomcat but I have been unsuccessful.
> >
> > This is the EAR file breakdown:
> >
> > TestEAR.ear
> > ----application.xml
> > ----TestWAR.war
> > --------WEB-INF
> > ------------lib
> > ----------------ClientJAR.jar
> > --------------------com
> > ------------------------munoz
> > ----------------------------ejb
> > --------------------------------Person.class
> > --------------------------------PersonBean.class
> > --------------------------------PersonHome.class
> > ------------web.xml
> > --------ejbTest.jsp
> >
> > ----TestJAR.jar
> > --------META-INF
> > ------------ejb-jar.xml
> > --------com
> > ------------munoz
> > ----------------ejb
> > --------------------Person.class
> > --------------------PersonBean.class
> > --------------------PersonHome.class
> >
> > In the JSP I am making the following call:
> >
> >     Context initialContext = new InitialContext();
> >     Object personHome = null;
> >
> >     try
> >     {
> >         personHome = initialContext.lookup("PersonBean");
> >         if (personHome == null)
> >         {
> >             out.println("PersonHome is null");
> >         }
> >         else
> >         {
> >             out.println("Success!");
> >         }
> >     }
> >     catch (Exception exception)
> >     {
> >         System.out.println(exception);
> >         out.println(exception);
> >         exception.printStackTrace(System.out);
> >     }
> >
> > The page compiles correctly, but when I call it, I get back 
> the following
> > exception:
> >
> > [EmbeddedTomcat] javax.naming.CommunicationException [Root 
> exception is
> > java.lang.ClassNotFoundException: 
> com.munoz.concept.person.PersonHome]
> > javax.naming.CommunicationException.  Root exception is 
> [EmbeddedTomcat]
> > java.lang.ClassNotFoundException: 
> com.munoz.concept.person.PersonHome
> > [EmbeddedTomcat]        at
> > javax.management.loading.MLet.findClass(MLet.java:800)
> > [EmbeddedTomcat]        at 
> java.lang.ClassLoader.loadClass(Unknown Source)
> > [EmbeddedTomcat]        at 
> java.lang.ClassLoader.loadClass(Unknown Source)
> > [EmbeddedTomcat]        at 
> java.lang.ClassLoader.loadClassInternal(Unknown
> > Source)
> > [EmbeddedTomcat]        at java.lang.Class.forName0(Native Method)
> > [EmbeddedTomcat]        at java.lang.Class.forName(Unknown Source)
> > [EmbeddedTomcat]        at
> > sun.rmi.server.MarshalInputStream.resolveProxyClass(Unknown Source)
> > [EmbeddedTomcat]        at
> > java.io.ObjectInputStream.inputProxyClassDescriptor(Unknown Source)
> > [EmbeddedTomcat]        at 
> java.io.ObjectInputStream.readObject(Unknown
> > Source)
> > [EmbeddedTomcat]        at 
> java.io.ObjectInputStream.readObject(Unknown
> > Source)
> > [EmbeddedTomcat]        at 
> java.io.ObjectInputStream.inputObject(Unknown
> > Source)
> > [EmbeddedTomcat]        at 
> java.io.ObjectInputStream.readObject(Unknown
> > Source)
> > [EmbeddedTomcat]        at 
> java.io.ObjectInputStream.readObject(Unknown
> > Source)
> > [EmbeddedTomcat]        at 
> java.rmi.MarshalledObject.get(Unknown Source)
> > [EmbeddedTomcat]        at
> > org.jnp.interfaces.NamingContext.lookup(NamingContext.java:299)
> > [EmbeddedTomcat]        at
> > org.jnp.interfaces.NamingContext.lookup(NamingContext.java:279)
> > [EmbeddedTomcat]        at 
> javax.naming.InitialContext.lookup(Unknown
> > Source)
> > [EmbeddedTomcat]        at
> >
> _0002fejbTest_0002ejspejbTest_jsp_21._jspService(_0002fejbTest
> _0002ejspejbTe
> > st_jsp_21.java:71)
> > [EmbeddedTomcat]        at
> > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
> > [EmbeddedTomcat]        at
> > javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > [EmbeddedTomcat]        at
> >
> org.apache.jasper.servlet.JspServlet$JspServletWrapper.service
> (JspServlet.ja
> > va:177)
> > [EmbeddedTomcat]        at
> > 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet
> .java:318)
> > [EmbeddedTomcat]        at
> > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:391)
> > [EmbeddedTomcat]        at
> > javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > [EmbeddedTomcat]        at
> > 
> org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper
> .java:404)
> > [EmbeddedTomcat]        at
> > org.apache.tomcat.core.Handler.service(Handler.java:286)
> > [EmbeddedTomcat]        at
> > 
> org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
> > [EmbeddedTomcat]        at
> >
> org.apache.tomcat.core.ContextManager.internalService(ContextM
> anager.java:79
> > 7)
> > [EmbeddedTomcat]        at
> > 
> org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
> > [EmbeddedTomcat]        at
> >
> org.apache.tomcat.service.http.HttpConnectionHandler.processCo
> nnection(HttpC
> > onnectionHandler.java:210)
> > [EmbeddedTomcat]        at
> > 
> org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoin
> t.java:416)
> > [EmbeddedTomcat]        at
> > 
> org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPo
ol.java:498)
> > [EmbeddedTomcat]        at java.lang.Thread.run(Unknown Source)
> >
> > My confusion comes from the fact that the JSP compiles even 
> though I am
> > importing com.munoz.ejb.PersonHome, meaning that the class 
> can be found at
> > compile time, but the class cannot be found on runtime. Any ideas?
> 
> _______________________________________________
> JBoss-user mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/jboss-user
> 

_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to