我正在尝试在两台服务器之间配置 jms 设置。发送方在(服务器 A)jboss 5 上,接收方在(服务器 B)jboss 4 上(使用来自服务器 A 的远程队列。
当我尝试在 jboss 5 或 jboss 4 上同时运行时,它可以工作。但是当接收者在 jboss 4 上并且发送者在 jboss 5 上时,它会抛出异常。
原因:java.lang.ClassNotFoundException:没有找到 ClassLoaders:org.jboss.jms.client.JBossConnectionFactory(没有安全管理器:RMI 类加载器已禁用)
异常跟踪:
javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: No ClassLoaders found for: org.jboss.jms.client.JBossConnectionFactory (no security manager: RMI class loader disabled)]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:728)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at org.jboss.ejb.plugins.jms.DLQHandler.createService(DLQHandler.java:182)
at org.jboss.system.ServiceMBeanSupport.jbossInternalCreate(ServiceMBeanSupport.java:260)
at org.jboss.system.ServiceMBeanSupport.create(ServiceMBeanSupport.java:188)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker.innerStartDelivery(JMSContainerInvoker.java:510)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker$ExceptionListenerImpl$ExceptionListenerRunnable.run(JMSContainerInvoker.java:1419)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: No ClassLoaders found for: org.jboss.jms.client.JBossConnectionFactory (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:375)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620)
at org.jboss.system.JBossRMIClassLoader.loadClass(JBossRMIClassLoader.java:91)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at java.rmi.MarshalledObject.get(MarshalledObject.java:142)
at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:652)
... 8 more
我发现下面的链接似乎与我面临的问题相似,但无法准确地从哪个服务器到哪个服务器我需要在 war 文件下拥有客户端库? https://access.redhat.com/solutions/45133
更多细节:-
在我的案例中,jboss 4.0.4 和 jboss 5.1.0 都为不同的队列托管消息。-- jboss 5 正在托管消息,并且侦听器在 jboss4 上为 QueueA。-- jboss 4 正在托管消息,并且侦听器在 jboss 5 上为 QueueB。
我们想要实现的目标:-服务器 A 上的 Jboss 4 应该与服务器 B 上的 jboss 5 上配置的 RemoteQueues 进行通信,这不工作并抛出异常。两台服务器之间没有进行通信。