Hi folks,

I have two applications APP1 and APP2 packaged in two EARs and deployed in
the same Tomee. 
APP1 is exposing a local and remote interfaces, APP2 a remote interface
which invokes APP1 interfaces.

As the two apps share the same JVM, I thought pass through local interface
to avoid RMI overhead ... but I am stocked with cast exception : 

java.lang.ClassCastException: com.sun.proxy.$Proxy216 cannot be cast to
com.app1.service.MyLocal
        at com.app2.service.MyRemote.someMethod(BeanR.java:42)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
        at
org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
        at
org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100)
        at sun.reflect.GeneratedMethodAccessor89.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
        at
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
        at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227)
        at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194)
        at
org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
        at
org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:181)
        at
org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:344)
        at org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:240)
        at org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:86)
        at
org.apache.openejb.server.httpd.ServerServlet.service(ServerServlet.java:58)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:610)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
        at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

here is a snippet of someMethod code : 

final Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.client.LocalInitialContextFactory");
MyLocal l = (MyLocal) new InitialContext(p).lookup("MyLocalLocal");

The use of PortableRemoteObject.narrow does not fix the problem !

Any hint ? Thanks in advance.


NB : There is no problem when invoking remotes. 








--
View this message in context: 
http://tomee-openejb.979440.n4.nabble.com/ClassCastException-when-handing-local-interface-lookup-from-another-local-ear-same-JVM-tp4674329.html
Sent from the TomEE Users mailing list archive at Nabble.com.

Reply via email to