AXIS2: поиск JNDI имени ConnectionFactory возвратил org.jboss.mq.SpyConnectionFactory, в то время как ожидался интерфейс javax.jms.ConnectionFactory
Я установил новую версию WSO2 ESB 4.2.3 (последняя стабильная до сих пор) и настроил транспорт JMS в axis2.xml
файл следующим образом:
<!-- Configuration for JBoss 4.2.2 GA MQ -->
<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
<parameter name="SMSOUTQueueConnectionFactory" locked="false">
<parameter name="java.naming.factory.initial" locked="false">org.jnp.interfaces.NamingContextFactory</parameter>
<parameter name="java.naming.factory.url.pkgs" locked="false">org.jboss.naming:org.jnp.interfaces</parameter>
<parameter name="java.naming.provider.url" locked="false">jnp://192.168.10.125:1100</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
<parameter name="transport.jms.Destination" locked="true">queue/SMSOUTQueue</parameter>
</parameter>
</transportReceiver>
Сразу после этого при запуске была обнаружена ошибка:
15:09:16,585 INFO [STDOUT] 15:09:16,585 ERROR [BaseUtils] JNDI lookup of name ConnectionFactory returned a org.jboss.mq.SpyConnectionFactory while a interface javax.jms.ConnectionFactory was expected
15:09:16,587 INFO [STDOUT] 15:09:16,585 ERROR [ListenerManager] Couldn't initialize the jmstransport listener
org.apache.axis2.transport.base.BaseTransportException: JNDI lookup of name ConnectionFactory returned a org.jboss.mq.SpyConnectionFactory while a interface javax.jms.ConnectionFactory was expected
at org.apache.axis2.transport.base.BaseUtils.handleException(BaseUtils.java:167)
at org.apache.axis2.transport.jms.JMSUtils.lookup(JMSUtils.java:522)
at org.apache.axis2.transport.jms.JMSConnectionFactory.<init>(JMSConnectionFactory.java:92)
at org.apache.axis2.transport.jms.JMSConnectionFactoryManager.loadConnectionFactoryDefinitions(JMSConnectionFactoryManager.java:58)
at org.apache.axis2.transport.jms.JMSConnectionFactoryManager.<init>(JMSConnectionFactoryManager.java:45)
at org.apache.axis2.transport.jms.JMSListener.doInit(JMSListener.java:58)
at org.apache.axis2.transport.base.AbstractTransportListenerEx.init(AbstractTransportListenerEx.java:62)
at org.apache.axis2.engine.ListenerManager.init(ListenerManager.java:84)
at org.wso2.carbon.core.init.CarbonServerManager.initializeCarbon(CarbonServerManager.java:386)
at org.wso2.carbon.core.init.CarbonServerManager.removePendingItem(CarbonServerManager.java:273)
at org.wso2.carbon.core.init.PreAxis2ConfigItemListener.bundleChanged(PreAxis2ConfigItemListener.java:117)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:916)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:220)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:330)
Я нашел много постов, где люди говорят, чтобы удалить ...WEB-INF/lib/geronimo-jms_1.1_spec-1.1.0.wso2v1.jar
потому что в противном случае синапс не работает ни с одним внешним JMS-брокером (я нашел такой же ответ и для Mule ESB), но для меня это решение не работает.
Проблема очень похожа на эту ссылку.
Любая помощь очень ценится. Заранее большое спасибо.
1 ответ
Это немного поздний ответ. Но я также столкнулся с той же ошибкой и смог исправить. При попытке подключиться к очереди JMS, развернутой на сервере JBoss из WSO2 ESB 4.6.0 и даже при удалении jar geronimo-jms_1.1_spec-1.1.0.wso2v1.jar, упомянутая вами проблема не была устранена.
Причина этого заключается в том, что в ваших добавленных jabss-файлах jarss в ESB/repository/components/lib есть несколько других jar-файлов, раскрывающих реализацию javax.jms. , Например, в моем случае было два дополнительных jar-файла с именами jboss-j2ee.jar и jbossall-client.jar, которые выставляли javax.jms., Я открыл два фляги и удалил часть пакета javax.jms.* Из обоих пакетов. Затем проблема была устранена.
Спасибо;