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) org.jboss.naming.remote.protocol.v1.Protocol$1.execute(Protocol.java:104) で 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.postMessageInQueue(LocationProcessor.java:377) のルックアップ (不明なソース) com.infosys.lbs.publishing.LocationProcessor.process(LocationProcessor.java:69) の com.infosys.lbs.Publishing.main.Publisher.main(Publisher.java:34) 原因: java.io.NotSerializableException: org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller) の org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy .java:891) org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1063) org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019) org.jboss.marshalling. river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885) org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1063) org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019) org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:998)marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885) org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:62) org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:119) 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) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) で java.lang.Thread.run(Thread.java:662) が発生したに:発生した例外: オブジェクト org.hornetq.jms.client.HornetQJMSConnectionFactory@ea074d のフィールド serverLocator のフィールド loadBalancingPolicy
アプリが接続ファクトリを検索しようとしたときに例外が発生していました
QueueConnectionFactory qcf = (QueueConnectionFactory)context.lookup("jms/RemoteConnectionFactory");
以下は、問題を解決した手順です。