java.lang.ClassNotFoundException: не найдены загрузчики классов для:> org.jboss.jms.client.JBossConnectionFactory - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь настроить установку JMS между двумя серверами. Отправитель включен (сервер A) jboss 5, а получатель включен (сервер B) jboss 4 (который использует удаленную очередь с сервера A.

Когда я пытаюсь запустить оба на jboss 5 или jboss 4, это работает. Но когда получатель находится на jboss 4, а отправитель на jboss 5, он выдает значение ниже Exception.

Причина: java.lang.ClassNotFoundException: не найдены загрузчики классов для: 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.

Чего мы хотим достичь: - Jboss 4 на сервере A должен взаимодействовать с RemoteQueues, которые настроены на jboss 5 на сервере B, который не работает и выбрасывает выше Exception. Связь не происходит между обоими серверами.

1 Ответ

0 голосов
/ 09 апреля 2019

Суть в том, что JBoss 4.x использует JBossMQ в качестве реализации JMS, а JBoss 5.x использует JBoss Messaging в качестве реализации JMS.Они не совместимы напрямую, поэтому вам нужно решить, на каком сервере будут размещаться сообщения.

Если вы хотите, чтобы на сервере JBoss 5 размещались сообщения , то все клиенты (включая клиентов, работающих на JBoss 4) должны будут использовать клиентские библиотеки JBoss Messaging.

Если вы хотите, чтобы на сервере JBoss 4 размещались сообщения , то все клиенты (в том числе работающие на JBoss 5) должны будут использовать клиентские библиотеки JBossMQ.

Если вы размещаете сообщения на обоих серверах JBoss 4 и JBoss 5 , то клиенты для каждого из них должны будут использовать соответствующие клиентские библиотеки для любого брокера, с которым они работают.

...