Re: Re: Re: Re: Re: Re: Re: Re: Re: Strange ClassCastExceptionwhen looking up SLSB RemoteHome from "external" .war webapp
Florent BENOIT <[email protected]>
| Newsgroups | gmane.comp.java.objectweb.jonas |
|---|---|
| Message-ID | <[email protected]> |
Hi Hans,
Try to enable the security manager in JONAS_BASE/conf/jonas.properties
Regards,
Florent
Hans J. Prueller wrote:
> 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
>>>>>>>>>
>>>>>>>
>