2017-01-22 11 views
0

Я пытаюсь использовать управляемые JMS ресурсы БЫЛА во встроенных Mule ESB с разъемом JMS, как показано ниже:Использование WebSphere AS JMS ресурсы встроенного Mule

<jms:connector name="JMS" 
validateConnections="true" 
jndiInitialFactory="com.ibm.websphere.naming.WsnInitialContextFactory" 
connectionFactoryJndiName="jms/mycf" 
doc:name="JMS" 
specification="1.1" 
embeddedMode="true"/> 

завод Подключение найден Mule без проблем, но при попытке получить соединение Mule заканчивается следующим:

Caused by: javax.jms.IllegalStateException: Method setExceptionListener not permitted 
at com.ibm.ejs.jms.JMSCMUtils.methodNotPermittedException(JMSCMUtils.java:244) 
at com.ibm.ejs.jms.JMSConnectionHandle.checkRestrictedMethod(JMSConnectionHandle.java:854) 
at com.ibm.ejs.jms.JMSConnectionHandle.setExceptionListener(JMSConnectionHandle.java:353) 
at org.springframework.jms.connection.SingleConnectionFactory.prepareConnection(SingleConnectionFactory.java:395) 
at org.springframework.jms.connection.SingleConnectionFactory.initConnection(SingleConnectionFactory.java:306) 
at org.springframework.jms.connection.SingleConnectionFactory.getConnection(SingleConnectionFactory.java:283) 
at org.springframework.jms.connection.SingleConnectionFactory.createConnection(SingleConnectionFactory.java:224) 
at org.mule.transport.jms.Jms11Support.createConnection(Jms11Support.java:72) 
at org.mule.transport.jms.JmsConnector.createConnection(JmsConnector.java:450) 
at org.mule.transport.jms.JmsConnector.doConnect(JmsConnector.java:547) 
at org.mule.transport.AbstractConnector.connectConnectorAndReceivers(AbstractConnector.java:1663) 
at org.mule.transport.AbstractConnector$5.doWork(AbstractConnector.java:1629) 
at org.mule.retry.policies.AbstractPolicyTemplate.execute(AbstractPolicyTemplate.java:63) 

Любое предположение о том, как это можно решить?

Нужно ли Mule установить этот ExceptionListener или его можно каким-то образом пропустить?

ответ

0

Наконец я нашел способ, чтобы избавиться от этого исключения, просто добавив это в определение разъема:

cacheJmsSessions="false" 

Это не может быть установлено с помощью интерфейса из-умолчания истинного и CheckBox управления при условии, но по-прежнему может быть добавлен вручную в XML.

Этот параметр, установленный на false, пропускает создание фабричного декоратора соединения (CustomCachingConnectionFactory), поэтому после этого соединение будет в порядке.

Но в любом случае, Mule затем терпит неудачу с сообщением потребителя следующим образом:

Caused by: org.mule.api.lifecycle.LifecycleException: Method getMessageListener not permitted 
at org.mule.transport.jms.MultiConsumerJmsMessageReceiver$SubReceiver.doStart(MultiConsumerJmsMessageReceiver.java:325) 
at org.mule.transport.jms.MultiConsumerJmsMessageReceiver.startSubReceivers(MultiConsumerJmsMessageReceiver.java:235) 
at org.mule.transport.jms.MultiConsumerJmsMessageReceiver.doStart(MultiConsumerJmsMessageReceiver.java:114) 
at org.mule.transport.AbstractMessageReceiver.doStartHandler(AbstractMessageReceiver.java:473) 
at org.mule.transport.AbstractTransportMessageHandler$3.onTransition(AbstractTransportMessageHandler.java:321) 
at org.mule.lifecycle.AbstractLifecycleManager.invokePhase(AbstractLifecycleManager.java:138) 
at org.mule.transport.ConnectableLifecycleManager.fireStartPhase(ConnectableLifecycleManager.java:48) 
at org.mule.transport.AbstractTransportMessageHandler.start(AbstractTransportMessageHandler.java:317) 
at org.mule.transport.AbstractConnector.registerListener(AbstractConnector.java:1303) 
at org.mule.endpoint.DefaultInboundEndpoint.start(DefaultInboundEndpoint.java:105) 
... 77 more 
Caused by: javax.jms.IllegalStateException: Method getMessageListener not permitted 
at com.ibm.ejs.jms.JMSCMUtils.methodNotPermittedException(JMSCMUtils.java:244) 
at com.ibm.ejs.jms.JMSMessageConsumerHandle.getMessageListener(JMSMessageConsumerHandle.java:369) 
at org.mule.transport.jms.MultiConsumerJmsMessageReceiver$SubReceiver.doStart(MultiConsumerJmsMessageReceiver.java:316) 

Это происходит потому, что Mule встроенный пренебрегает спецификации J2EE, в котором говорится, что такие методы, как getMessageListener/setMessageListener не может быть вызвана из/Web контейнеров EE ,

Таким образом, использование стандартного JMS-коннектора с Websphere не представляется возможным.

 Смежные вопросы

  • Нет связанных вопросов^_^