当前位置: 首页 > 知识库问答 >
问题:

使用来自嵌入式骡子的 Websphere AS JMS 资源

秦俊发
2023-03-14

我正在尝试在嵌入式骡子 ESB 中使用 WAS 的托管 JMS 资源,JMS 连接器如下所示:

<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或者它可以被跳过吗?

共有1个答案

杨安歌
2023-03-14

最后,我找到了一种方法来消除这个异常,只需将它添加到连接器定义中:

cacheJmsSessions="false"

由于提供了默认的true和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 embedded不遵守j2ee规范,该规范规定不能从EE/Web容器中调用getMessageListener/setMessageListener等方法。

所以在Websphere中使用标准的JMS连接器看起来是不可能的。

 类似资料:
  • 下面是一个我正在与SDR斗争的用例- 这是用户表和参考问题表 这是用户表和用户好友表 当我转到/users/{id}/userFriends时,默认情况下应该显示UserProjection中的firstname、lastname等 因此,我在UserRepository中启用了摘录投影,效果很好。我预计这里会有大约100个结果,所以如果这个结果没有分页的话就可以了。 但是,既然RefSecQue

  • 我是骡子和JMS的新手。只是试图弄清楚如何使用连接器添加JMSendpoint。是否提供了 Mule 提供的任何 JMS 实现,或者我是否需要使用外部 JMS 提供程序。

  • 嵌入资源 嵌入资源即内容嵌入,可以为工程师提供诸如图片base64嵌入到css、js里,前端模板编译到js文件中,将js、css、html拆分成几个文件最后合并到一起的能力。有了这项能力,可以有效的减少http请求数,提升工程的可维护性。 fis不建议用户使用内容嵌入能力作为组件化拆分的手段,因为声明依赖能力会更适合组件化开发。 在html中嵌入资源 在html中可以嵌入其他文件内容或者base6

  • 我想使用REST API的HAL格式来包含嵌入式资源。我在API中使用Spring HATEOAS,Spring HATEOAS似乎支持嵌入式资源;但是,没有关于如何使用此功能的文档或示例。 有人能提供一个如何使用Spring HATEOAS包含嵌入式资源的例子吗?

  • 6.10 嵌入式资源 6.10.1 简介 在Web应用程序中,ABP提供了一个简单的方法来使用嵌入式的 Razor视图(.cshtml文件)和 其它资源(css,js,img等文件)。你可以使用该功能来创建包含UI功能的插件/模块。 6.10.2 创建嵌入式文件 首先,我们应该创建一个文件并且标记它为 嵌入式资源。任何程序集都可以包含嵌入式资源文件。至于如何标记它,这要看你的项目是什么格式的。 项

  • 如何在mule dataweave中编写嵌套循环 我有这样的代码, 但它给出的错误,我无法在此添加其他条件。我想在其他部分分配 $ 值