0

我正在使用 JBoss AS 7 Hornetq。我们的独立 java 应用程序与队列交互并发送消息。我们已经完成了整个环境设置,并且运行得非常顺利。突然,在美好的一天,我们的独立应用程序失败了,但出现以下异常:

Caused by: java.io.NotSerializableException: org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy

详细的异常堆栈跟踪如下

javax.naming.NamingException:无法在 org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil. java:36) at org.jboss.naming.remote.protocol.v1.Protocol$1.execute(Protocol.java:104) at org.jboss.naming.remote.protocol.v1.RemoteNamingStoreV1.lookup(RemoteNamingStoreV1.java:79 ) 在 org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:79) 在 org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:83) 在 javax.naming.InitialContext。在 com.infosys.lbs.publishing.LocationProcessor.process(LocationProcessor.java:69) 在 com.infosys.lbs 在 com.infosys.lbs.publishing.LocationProcessor.postMessageInQueue(LocationProcessor.java:377) 查找(未知来源)。publishing.main.Publisher.main(Publisher.java:34) 引起:java.io.NotSerializableException: org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller .java:891)在 org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019) 在 org.jboss.marshalling.doWriteFields(RiverMarshaller.java:1063) 在 org.jboss.marshalling。 River.RiverMarshaller.doWriteObject(RiverMarshaller.java:885) at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1063) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)在 org.jboss 的 org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:998)。marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885) at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:62) at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:119) at org .jboss.naming.remote.protocol.v1.Protocol$1$2.write(Protocol.java:138) at org.jboss.naming.remote.protocol.v1.WriteUtil.write(WriteUtil.java:61) at org.jboss .naming.remote.protocol.v1.Protocol$1.handleServerMessage(Protocol.java:128) at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever$1.run(RemoteNamingServerV1.java:73) at java.util .concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) 引起经过:发生的异常:在对象 org.hornetq.jms.client.HornetQJMSConnectionFactory@ea074d 中的字段 serverLocator 中的字段 loadBalancingPolicy

当应用程序尝试查找连接工厂时发生异常

QueueConnectionFactory qcf = (QueueConnectionFactory)context.lookup("jms/RemoteConnectionFactory");

以下是我们如何解决问题的步骤

4

1 回答 1

1

解决此问题的帮助几乎为零。对此异常的网络搜索几乎没有返回任何内容。但是,JBoss AS Dev 站点上的这个特定线程在我脑海中产生了一个想法:在远程客户端中查找时找不到 RemoteConnectionFactory

该线程中提到的场景与我们的不同。(在我们的应用程序中,这是第一次也是唯一一次发生的查找。)这个线程让我想到了一个可能的连接工厂初始化问题。虽然我无法调试或找到它周围的问题,但我认为如果我可以重新初始化它,那会有所帮助。

因此,我尝试使用java:jboss/exported/jms/RemoteConnectionFactory如预期的那样查找失败,并出现 NamingException。希望这种命名语法(使用 java:/)会导致重新初始化,我再次尝试使用jms/RemoteConnectionFactory. 还有宾果游戏!!!有效!

不幸的是,我们仍然不知道它为什么会发生,如果它只是一个一次性的案例!在这里记录一下,以防万一有人遇到这个问题。

于 2013-07-26T10:39:59.657 回答