GeeCON Prague 2014*
The moose likes EJB and other Java EE Technologies and the fly likes EJB with Weblogic 5.1 Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » EJB and other Java EE Technologies
Bookmark "EJB with Weblogic 5.1" Watch "EJB with Weblogic 5.1" New topic
Author

EJB with Weblogic 5.1

cris abanades
Greenhorn

Joined: Aug 30, 2001
Posts: 10
When I call a EJB in a servlet, it doesn't work but if I do this in an application client that calls EJB, it works perfectly.
What is the problem?
The exception is:
java.lang.ClassCastException at com.sun.corba.se.internal.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:296)
at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
at src.servlet.gesServlet.init(gesServlet.java:122)
at src.servlet.mainServlet.init(mainServlet.java:38)
at weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubImpl.java:390)
at weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStubImpl.java:349)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:338)
at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:164)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:99)
at weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImpl.java:742)
at weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImpl.java:686)
at weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContextManager.java:247)
at weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:361)
at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:261)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
Tim Holloway
Saloon Keeper

Joined: Jun 25, 2001
Posts: 16095
    
  21

I had a LOT of fun with this one about a year back. There are several DIFFERENT CLASSPATHS within WLS5.1 - the first thing you need to do is make sure that the EJB is accessible through the right one. I believe there's a warning in the docs in particular about not putting stuff in the servlet classpath if it should be somewhere else. Or maybe it's in the comments in the model config file?
Anyway, what will happen is essentially, there are two copies of the class instantiated, which superficially are identical, but which Java considers unique. So what should be a perfectly legitimate portableObjectNarrow() will fail. I think if you pull the EJB from the servlet classpath, internal WebLogic magic will still find the EJB for the servlet, but your message will go away.


Customer surveys are for companies who didn't pay proper attention to begin with.
 
GeeCON Prague 2014
 
subject: EJB with Weblogic 5.1