[
https://issues.jboss.org/browse/AS7-4872?page=com.atlassian.jira.plugin.s...
]
jaikiran pai commented on AS7-4872:
-----------------------------------
I've been thinking about this and I think you are right David, about adding an
dependency form remote-naming module to ejb-client module. One of remote-naming
project's functional aspect is to allow EJB invocations to happen through its API and
internally it uses the ejb-client project API to do that. As such, I don't see any
harm in adding that dependency to the remote-naming module. I'll send a PR with this
change.
Linkage error when doing remote JNDI lookup from messaging subsystem
--------------------------------------------------------------------
Key: AS7-4872
URL:
https://issues.jboss.org/browse/AS7-4872
Project: Application Server 7
Issue Type: Bug
Components: Naming
Affects Versions: 7.1.2.Final (EAP)
Reporter: Jeff Mesnil
Assignee: jaikiran pai
Priority: Minor
Working on AS7-4626 to add JMS bridge, the messaging subsystem now need to perform remote
JNDI lookup on another AS7 instances.
I added the org.jboss.remote-naming to the org.jboss.as.messaging to be able to load
org.jboss.naming.remote.client.InitialContextFactory.
However this creates a Linkage error:
09:45:42,100 WARN [org.jboss.modules] (MSC service thread 1-4) Failed to define class
org.jboss.naming.remote.client.ejb.RemoteNamingEjbClientContextSelector in Module
"org.jboss.remote-naming:main" from local module loader @a94884d (roots:
/home/jmesnil/Developer/jboss-as/build/target/jboss-as-7.2.0.Alpha1-SNAPSHOT/modules):
java.lang.LinkageError: Failed to link
org/jboss/naming/remote/client/ejb/RemoteNamingEjbClientContextSelector (Module
"org.jboss.remote-naming:main" from local module loader @a94884d (roots:
/home/jmesnil/Developer/jboss-as/build/target/jboss-as-7.2.0.Alpha1-SNAPSHOT/modules))
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:396)
at
org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:243)
at
org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:73)
at org.jboss.modules.Module.loadModuleClass(Module.java:527)
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:182)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at
org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
at
org.jboss.naming.remote.client.InitialContextFactory.<clinit>(InitialContextFactory.java:118)
[jboss-remote-naming-1.0.3.Final.jar:1.0.3.Final]
at java.lang.Class.forName0(Native Method) [rt.jar:1.6.0_24]
at java.lang.Class.forName(Class.java:264) [rt.jar:1.6.0_24]
at
org.jboss.as.naming.InitialContextFactoryBuilder.createInitialContextFactory(InitialContextFactoryBuilder.java:61)
[jboss-as-naming-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT]
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:681)
[rt.jar:1.6.0_24]
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
[rt.jar:1.6.0_24]
at javax.naming.InitialContext.init(InitialContext.java:240) [rt.jar:1.6.0_24]
at javax.naming.InitialContext.<init>(InitialContext.java:214)
[rt.jar:1.6.0_24]
at
org.hornetq.jms.bridge.impl.JNDIFactorySupport.createObject(JNDIFactorySupport.java:55)
[hornetq-jms-2.2.16.Final.jar:2.2.16.Final (HQ_2_2_16_FINAL, 122)]
at
org.hornetq.jms.bridge.impl.JNDIDestinationFactory.createDestination(JNDIDestinationFactory.java:40)
[hornetq-jms-2.2.16.Final.jar:2.2.16.Final (HQ_2_2_16_FINAL, 122)]
at
org.hornetq.jms.bridge.impl.JMSBridgeImpl.setupJMSObjects(JMSBridgeImpl.java:1083)
[hornetq-jms-2.2.16.Final.jar:2.2.16.Final (HQ_2_2_16_FINAL, 122)]
at org.hornetq.jms.bridge.impl.JMSBridgeImpl.start(JMSBridgeImpl.java:348)
[hornetq-jms-2.2.16.Final.jar:2.2.16.Final (HQ_2_2_16_FINAL, 122)]
at
org.jboss.as.messaging.jms.bridge.JMSBridgeService.start(JMSBridgeService.java:57)
[jboss-as-messaging-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT]
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
[rt.jar:1.6.0_24]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
[rt.jar:1.6.0_24]
at java.lang.Thread.run(Thread.java:679) [rt.jar:1.6.0_24]
Caused by: java.lang.NoClassDefFoundError: org/jboss/ejb/client/ContextSelector
at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.6.0_24]
at java.lang.ClassLoader.defineClass(ClassLoader.java:634) [rt.jar:1.6.0_24]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[rt.jar:1.6.0_24]
at
org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:327)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:391)
... 26 more
Caused by: java.lang.ClassNotFoundException: org.jboss.ejb.client.ContextSelector from
[Module "org.jboss.remote-naming:main" from local module loader @a94884d (roots:
/home/jmesnil/Developer/jboss-as/build/target/jboss-as-7.2.0.Alpha1-SNAPSHOT/modules)]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at
org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
... 31 more
This error does not prevent doing remote lookups but looks ugly when starting the JMS
bridge...
org.jboss.naming.remote.client.InitialContextFactory is trying to load
org.jboss.naming.remote.client.ejb.RemoteNamingEjbClientContextSelector
in its static initialization block.
This class depends on org.jboss.ejb.client.ContextSelector which is in the
org.jboss.ejb-client module.
I don't want to add a dependency from org.jboss.as.messaging to org.jboss.ejb-client
if I can avoid it.
The org.jboss.naming.remote.client.InitialContextFactory defines a SETUP_EJB_CONTEXT
property that I could set to false but this property is checked after trying to load the
ejb-client class in the static block. afaict, loading the class only after checking the
property would be enough to prevent having this error being displayed
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira