Integrating JBoss 7.1 & Websphere via EJB3
krivko Apr 24, 2012 2:44 AMHello!
I'm trying to integrate JBoss 7.1 and Websphere 7 via remote EJB3 call. I made an standalone Java client which works just fine by including two Websphere libraries (com.ibm.ws.orb_7.0.0.jar & com.ibm.ws.admin.client_7.0.0.jar).
Here is a code snippet from standalone client
public static void main(String[] args) { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"); env.put("org.omg.CORBA.ORBClass", "com.ibm.CORBA.iiop.ORB"); env.put(Context.PROVIDER_URL, "corbaloc:iiop:172.30.3.107:2811"); Context context; try { context = new InitialContext(env); String jndiName = "ejb/Vozniki/RmiRouterVoznikiEjb.jar/TestBean#si.src.vozniki.ejb.TestBeanRemote"; System.out.println("lookup-!"); Object obj = context.lookup(jndiName); System.out.println("after lookup-!"); TestBeanRemote remote = (TestBeanRemote) obj; System.out.println("remote hello :" + remote.hello()); } catch (NamingException e) { throw new RuntimeException(e); } System.out.println("the end!"); }
When I try to run the same code on JBoss 7.1 (runs on the same JDK as standalone client) in web application's controller (the forementioned WAS libraries are included) I get a rather unpleasant exception
08:15:06,077 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/dic-rmi].[spring-def/dispatcher]] (http--127.0.0.1-8080-1) Servlet.service() for servlet spring-def/dispatcher threw exception: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "com.ibm.rmi.io.ValueHandlerImpl.readValue(Lorg/omg/CORBA/portable/InputStream;ILjava/lang/Class;Ljava/lang/String;Lorg/omg/SendingContext/RunTime;)Ljava/io/Serializable;" the class loader (instance of org/jboss/modules/ModuleClassLoader) of the current class, com/ibm/rmi/io/ValueHandlerImpl, and the class loader (instance of org/jboss/modules/ModuleClassLoader) for interface javax/rmi/CORBA/ValueHandler have different Class objects for the type org/omg/SendingContext/RunTime used in the signature at com.ibm.rmi.iiop.CDRWriter.<init>(CDRWriter.java:304) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.rmi.iiop.CDROutputStream.<init>(CDROutputStream.java:159) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.rmi.iiop.IIOPOutputStream.<init>(IIOPOutputStream.java:112) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.rmi.iiop.ORB.newOutputStream(ORB.java:426) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.CORBA.iiop.ORB.newOutputStream(ORB.java:895) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.rmi.iiop.Connection._locate(Connection.java:453) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.rmi.iiop.Connection.locate(Connection.java:439) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.rmi.iiop.GIOPImpl.locate(GIOPImpl.java:219) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.rmi.corba.Corbaloc.locateUsingINS(Corbaloc.java:307) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.rmi.corba.Corbaloc.resolve(Corbaloc.java:378) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.rmi.corba.ORB.objectURLToObject(ORB.java:3721) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.CORBA.iiop.ORB.objectURLToObject(ORB.java:3256) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.rmi.corba.ORB.string_to_object(ORB.java:3619) [com.ibm.ws.orb-7.0.0.jar:] at com.ibm.ws.naming.util.WsnInitCtxFactory.stringToObject(WsnInitCtxFactory.java:1567) [com.ibm.ws.admin.client-7.0.0.jar:] at com.ibm.ws.naming.util.WsnInitCtxFactory.getWsnNameService(WsnInitCtxFactory.java:1432) [com.ibm.ws.admin.client-7.0.0.jar:] at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootContextFromServer(WsnInitCtxFactory.java:987) [com.ibm.ws.admin.client-7.0.0.jar:] at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootJndiContext(WsnInitCtxFactory.java:909) [com.ibm.ws.admin.client-7.0.0.jar:] at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:581) [com.ibm.ws.admin.client-7.0.0.jar:] at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:124) [com.ibm.ws.admin.client-7.0.0.jar:] at com.ibm.ws.naming.util.WsnInitCtx.getContextIfNull(WsnInitCtx.java:799) [com.ibm.ws.admin.client-7.0.0.jar:] at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:165) [com.ibm.ws.admin.client-7.0.0.jar:] at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:180) [com.ibm.ws.admin.client-7.0.0.jar:] at javax.naming.InitialContext.lookup(InitialContext.java:392) [rt.jar:1.6.0_22] at si.src.dic.sb.sand_box.DicController.getOK(DicController.java:32) [classes:] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_22] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_22] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_22] at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_22] at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.10.Final.jar:] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.10.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.10.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.10.Final.jar:] at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_22]
Can you please help me with some advices, tips or tutorials how to integrate this two application servers. If you need any further details, please don't hasitate to ask
Thank you in advance!