【发布时间】:2011-11-14 23:03:17
【问题描述】:
什么意思?
我继承了一个集成测试失败的复杂 Java 库。该库使用通用的发布/订阅范例,但我必须承认,当涉及到这些 Weblogic/JMS/Spring 的任何东西时,我非常缺乏经验。测试应用程序在一台服务器上运行,并通过 JNI 从 C++ 调用 Java,并通过 fork(通过 JNI/Java 发布)启动子发布者进程。主应用程序通过 Spring 配置,并与安装在另一台服务器上的 Weblogic JMS 通信(Weblogic JMS 服务器由我们项目中的另一个组控制)。我设法打开了 spring jms 调试,这有点帮助。所以我的日志文件向我展示了一系列这样的事件:
(My App) Publishing...
org.springframework.jms.connection.CachingConnectionFactory Creating cached JMS MessageProducer for destination [MY-JMS-Module!DataTest2]: weblogic.jms.client.WLProducerImpl@7b9a29
...
(My App) Publishing...
org.springframework.jms.connection.CachingConnectionFactory Found cached JMS MessageProducer for destination [MY-JMS-Module!DataTest2]: weblogic.jms.client.WLProducerImpl@7b9a29
...
(My App) Publishing...
org.springframework.jms.connection.CachingConnectionFactory Found cached JMS MessageProducer for destination [MY-JMS-Module!DataTest2]: weblogic.jms.client.WLProducerImpl@7b9a29
...
(My App) Subscribing to DataTest2
org.springframework.jndi.JndiTemplate Looking up JNDI object with name [DataTest2]
(My App) Launching publisher process...
org.springframework.jms.support.destination.JndiDestinationResolver Located object with JNDI name [DataTest2]
org.springframework.jms.connection.CachingConnectionFactory Creating cached JMS MessageConsumer for destination [MY-JMS-Module!DataTest2]: weblogic.jms.client.WLConsumerImpl@5e3eed51
(My App) Publishing....
org.springframework.jms.connection.CachingConnectionFactory Creating cached JMS MessageProducer for destination [MY-JMS-Module!DataTest2]
...
WARN 2011-11-14 22:01:00,421 org.springframework.jms.listener.DefaultMessageListenerContainer Setup of JMS message listener invoker failed for destination 'DataTest2' - trying to recover. Cause: [JMSClientExceptions:055167]Single session cannot support more than one synchronous message-prefetching consumer.
java.lang.UnsupportedOperationException: [JMSClientExceptions:055167]Single session cannot support more than one synchronous message-prefetching consumer.
at weblogic.jms.client.JMSConsumer.receiveInternal(JMSConsumer.java:587)
at weblogic.jms.client.JMSConsumer.receive(JMSConsumer.java:526)
at weblogic.jms.client.WLConsumerImpl.receive(WLConsumerImpl.java:184)
at org.springframework.jms.connection.CachedMessageConsumer.receive(CachedMessageConsumer.java:74)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:429)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:310)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
at java.lang.Thread.run(Thread.java:636)
我当然希望我现在能够访问 Weblogic JMS 源代码来处理该异常。任何帮助或建议将不胜感激。就像我说的,代码有点复杂,所以我不确定我能提供比上面截断的日志更多的信息,而不是把它变成小说。
【问题讨论】: