Re: Re: Re: Re: Re: Re: Re: Re: Strange ClassCastException when looking up SLSB RemoteHome from "external" .war webapp
"Hans J. Prueller" <[email protected]>
| Newsgroups | gmane.comp.java.objectweb.jonas |
|---|---|
| Organization | LBS logics GmbH |
| Message-ID | <1295533020.1845.18.camel@smithers> |
no not really, the problem is that NONE of all of my SLSB EJB's seems to
be bound to the registry. As I mentioned, EJB Home lookup does not
work even for
the EAR-contained WAR's any more -- ?
hans
Am Donnerstag, den 20.01.2011, 14:11 +0100 schrieb Guillaume Sauthier:
> Do you see other Exceptions or strange messages before actually trying
> to invoke your webservice ?
> I'm looking for something that may cause the EJB not to be bound in
> JNDI ...
>
> --G
>
> Le 19/01/2011 16:59, Hans J. Prueller a écrit :
>
> > sorry, see below. btw: now no (remote) ejb home lookup works, also
> > not the one of the .war-webapps contained within the ear (which
> > worked previously):
> >
> > javax.naming.NamingException: Cannot perform lookup [Root exception
> > is javax.naming.NameNotFoundException: Guardian2Home]
> > at
> > org.ow2.carol.jndi.intercept.spi.InterceptableContext.namingException(InterceptableContext.java:823)
> > at
> > org.ow2.carol.jndi.intercept.spi.InterceptableContext.lookup(InterceptableContext.java:126)
> > at
> > org.ow2.carol.jndi.spi.VirtualJNDILookup.lookup(VirtualJNDILookup.java:109)
> > at javax.naming.InitialContext.lookup(InitialContext.java:392)
> > at
> > com.lbslogics.ims.ws.DataExchangeService.lookupGuardian(DataExchangeService.java:252)
> > at
> > com.lbslogics.ims.ws.DataExchangeService.exportData(DataExchangeService.java:309)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > at java.lang.reflect.Method.invoke(Method.java:597)
> > at
> > org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
> > at
> > org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102)
> > at
> > org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
> > at
> > org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
> > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
> > at
> > org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
> > at
> > org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:142)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> > at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> > at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> > at
> > org.ow2.jonas.web.tomcat6.CheckOpenResourcesValve.invoke(CheckOpenResourcesValve.java:73)
> > at
> > org.ow2.jonas.web.tomcat6.tx.TransactionValve.invoke(TransactionValve.java:90)
> > at
> > org.ow2.jonas.web.tomcat6.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:95)
> > at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> > at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> > at
> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> > at
> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
> > at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
> > at org.apache.coyote.http11.Http11Protocol
> > $Http11ConnectionHandler.process(Http11Protocol.java:588)
> > at org.apache.tomcat.util.net.JIoEndpoint
> > $Worker.run(JIoEndpoint.java:489)
> > at java.lang.Thread.run(Thread.java:662)
> > Caused by: javax.naming.NameNotFoundException: Guardian2Home
> > at
> > com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:99)
> > at javax.naming.InitialContext.lookup(InitialContext.java:396)
> > at org.ow2.carol.jndi.spi.AbsContext.lookup(AbsContext.java:142)
> > at org.ow2.carol.jndi.spi.AbsContext.lookup(AbsContext.java:152)
> > at javax.naming.InitialContext.lookup(InitialContext.java:392)
> > at org.ow2.carol.jndi.spi.MultiContext.lookup(MultiContext.java:117)
> > at
> > org.ow2.carol.jndi.intercept.operation.StringLookupInterceptionContext.executeLast(StringLookupInterceptionContext.java:48)
> > at
> > org.ow2.carol.jndi.intercept.operation.AbstractInterceptionContext.proceed(AbstractInterceptionContext.java:57)
> > at
> > org.ow2.jonas.jndi.interceptors.impl.datasource.DataSourceLeakDetectorContextInterceptor.intercept(DataSourceLeakDetectorContextInterceptor.java:63)
> > at
> > org.ow2.carol.jndi.intercept.operation.AbstractInterceptionContext.proceed(AbstractInterceptionContext.java:55)
> > at
> > org.ow2.carol.jndi.intercept.spi.InterceptableContext.lookup(InterceptableContext.java:124)
> > ... 32 more
> > 2011-01-19 16:57:55,000 : DataExchangeService.lookupGuardian : could
> > not lookup Guardian2Home: Cannot perform lookup
> > [ERROR] Exception occurred while trying to invoke service method
> > exportData
> >
> >
> > hans
> >
> >
> > Am Mittwoch, den 19.01.2011, 16:45 +0100 schrieb Guillaume Sauthier:
> >
> > > Can you give us the full stack trace please ?
> > > --G
> > >
> > > Le 19/01/2011 16:42, Hans J. Prueller a écrit :
> > >
> > > > tried it out, classcast problem gone but another error occurs:
> > > >
> > > > javax.naming.NamingException: Cannot perform lookup [Root
> > > > exception is javax.naming.NameNotFoundException: Guardian2Home]
> > > > at
> > > > org.ow2.carol.jndi.intercept.spi.InterceptableContext.namingException(InterceptableContext.java:823)
> > > > at
> > > > org.ow2.carol.jndi.intercept.spi.InterceptableContext.lookup(InterceptableContext.java:126)
> > > > at
> > > > org.ow2.carol.jndi.spi.VirtualJNDILookup.lookup(VirtualJNDILookup.java:109)
> > > > at javax.naming.InitialContext.lookup(InitialContext.java:392)
> > > >
> > > > hans
> > > >
> > > >
> > > > Am Mittwoch, den 19.01.2011, 10:45 +0100 schrieb Guillaume
> > > > Sauthier:
> > > >
> > > > > Can you try with local.registry set to false ?
> > > > > --G
> > > > >
> > > > > Le 19/01/2011 10:32, Hans J. Prueller a écrit :
> > > > >
> > > > > > Guillaume,
> > > > > >
> > > > > > thank you. I know about the fact you mentioned
> > > > > >
> > > > > > >>That means that you can have the same class (same name,
> > > > > > same bytecode, same everything), loaded by 2 different
> > > > > > classloaders
> > > > > > >> but that will be incompatible (you cannot cast one of
> > > > > > them into the other).
> > > > > >
> > > > > > and I already "suspected" a classloader issue being
> > > > > > responsible for the classcast problem ;-) I already tried
> > > > > > to remove the EJB API from
> > > > > > the WEB-INF/lib of the axis2 webapp, but that didn't solve
> > > > > > the problem but lead to a classnotfound or noclassdeffound
> > > > > > error.
> > > > > >
> > > > > > I did not change carol.properites - I am simply using JOnAS
> > > > > > 5.1.5 with its default values!
> > > > > >
> > > > > > carol.jvm.rmi.local.call = false
> > > > > > carol.jvm.rmi.local.registry = true
> > > > > >
> > > > > > regards,
> > > > > > Hans
> > > > > >
> > > > > > Am Mittwoch, den 19.01.2011, 10:25 +0100 schrieb Guillaume
> > > > > > Sauthier:
> > > > > >
> > > > > > > Hi Hans
> > > > > > >
> > > > > > > A Class object is defined by its name AND the ClassLoader
> > > > > > > that loaded it.
> > > > > > > That means that you can have the same class (same name,
> > > > > > > same bytecode, same everything), loaded by 2 different
> > > > > > > classloaders but that will be incompatible (you cannot
> > > > > > > cast one of them into the other).
> > > > > > >
> > > > > > > So in your case, you have 2 places where your EJB API is
> > > > > > > available: inside the EAR and inside the WEB-INF/lib of
> > > > > > > the axis2 webapp. So they are not sharing the same Class
> > > > > > > definition for your EJB API.
> > > > > > > What seems to happen is that JNDI returns an instance
> > > > > > > coming from your EAR.
> > > > > > >
> > > > > > > Did you change your carol.properties ?
> > > > > > > Can you show me the value of the following properties:
> > > > > > > * carol.jvm.rmi.local.call
> > > > > > > * carol.jvm.rmi.local.registry
> > > > > > >
> > > > > > > --G
> > > > > > >
> > > > > > > Le 19/01/2011 08:10, Hans J. Prueller a écrit :
> > > > > > >
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > we are still working on migrating our JOnAS 4.10 based
> > > > > > > > Java EE 1.4 EAR to JOnAS 5.1.5. One (seems really to be
> > > > > > > > the last) open issue
> > > > > > > > we have is the following:
> > > > > > > >
> > > > > > > > Our Java EE 1.4 Application is packaged as EAR, it
> > > > > > > > contains the EjB-JAR.JAR containing the EJB 2.1 SLSB's.
> > > > > > > > It also contains 2 or 3
> > > > > > > > webapps as .WAR file (war files within the EAR file),
> > > > > > > > which are looking up the remote homes and remote
> > > > > > > > interfaces of the SLSB's
> > > > > > > > which works fine.
> > > > > > > >
> > > > > > > > Then we have another webapp, based on AXIS2 which
> > > > > > > > provides webservices to external clients. The axis2 war
> > > > > > > > file provies web-services,
> > > > > > > > which also lookup the Remote Homes and Remote Interfaces
> > > > > > > > of some of the SLSB's contained in the ear mentioned
> > > > > > > > above.
> > > > > > > >
> > > > > > > > Therefore the remote home and remote interface stubs are
> > > > > > > > packaged as .jar file in web-inf/lib of the axis2.war
> > > > > > > > webapp.
> > > > > > > >
> > > > > > > > Basically this is all as it is meant to be by the Java
> > > > > > > > EE standard, this is what remote home and remote
> > > > > > > > interfaces of EJB's are for, and it
> > > > > > > > really works fine and smooth on JOnAS 4.10.X
> > > > > > > >
> > > > > > > > When we now deploy our .EAR file and the axis2.WAR on
> > > > > > > > JOnAS 5.1.5 and make a test-invocation of the
> > > > > > > > web-service, we get a really strange
> > > > > > > > ClassCastException:
> > > > > > > >
> > > > > > > > Cannot cast
> > > > > > > > 'org.ow2.jonas_gen.com.lbslogics.ims.guardian.interfaces.JOnASGuardian2Bean1797447629Home' in 'com.lbslogics.ims.guardian.interfaces.Guardian2Home'
> > > > > > > >
> > > > > > > > When I check the source file
> > > > > > > > (JOnASGuardian2Bean1797447629Home) generated by GenIC,
> > > > > > > > it explicitly says:
> > > > > > > >
> > > > > > > > public class JOnASGuardian2Bean1797447629Home extends
> > > > > > > > JSessionHome implements
> > > > > > > > com.lbslogics.ims.guardian.interfaces.Guardian2Home {
> > > > > > > >
> > > > > > > > // JOnAS version used to deploy
> > > > > > > > public static final String JONAS_VERSION = "5.1.5";
> > > > > > > >
> > > > > > > > [ ..... ]
> > > > > > > >
> > > > > > > >
> > > > > > > > ======> so, the cast has to be possible. (and btw this
> > > > > > > > works fine with all other .WAR's contained in the EAR
> > > > > > > > itself doing the same). So why or what
> > > > > > > > is the problem here ???
> > > > > > > >
> > > > > > > > Any ideas are appreciated because we cannot migrate our
> > > > > > > > production servers unless also the webservices are
> > > > > > > > working!
> > > > > > > >
> > > > > > > > regards,
> > > > > > > > Hans
> > > > > > > >
> > > > > >
> > > > > >
(unnamed)
(image/png, 1 KB) - not displayed