web-dev-qa-db-ja.com

ActiveMQの起動時のJava.io.EOFExceptionとしての警告

activeMQ 5.11を起動しようとしていますが、次のようなWARNINGが表示されます。

 WARN | Transport Connection to: tcp://127.0.0.1:40890 failed: Java.io.EOFException

俺の activemq.xmlは以下のとおりです。

<transportConnectors>
    <transportConnector name="openwire" uri="tcp://0.0.0.0:${JMS_PORT}" />
    <transportConnector name="stomp" uri="stomp://0.0.0.0:${JMS_STOMP_PORT}"/>
    <transportConnector name="ssl" uri="ssl://0.0.0.0:${JMS_SSL_PORT}"/>
</transportConnectors>

<sslContext>
    <sslContext
        keyStore="file:${JMS_KEY_STORE}"
        keyStorePassword="${JMS_KEY_STORE_PASSWORD}"
        trustStore="file:${JMS_TRUST_STORE}"
        trustStorePassword="${JMS_TRUST_STORE_PASSWORD}"
    />
</sslContext>

<networkConnectors>
    <networkConnector 
        name="Host1 and Host2" 
        uri="static://(${JMS_X_SITE_CSV_URL})?wireFormat=ssl&amp;wireFormat.maxInactivityDuration=30000"
        dynamicOnly="true"
        suppressDuplicateQueueSubscriptions = "true"
        networkTTL="1"
    />
</networkConnectors>

これは、コンソールログ全体です。

Java Runtime: Oracle Corporation 1.7.0_05 /usr/Java/jdk1.7.0_05/jre
  Heap sizes: current=1004928k  free=994439k  max=1004928k
    JVM args: -Xmx1G -Dorg.Apache.activemq.UseDedicatedTaskRunner=true -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/home/dragon/activemq/conf/login.config -Dcom.Sun.management.jmxremote -Djava.io.tmpdir=/home/dragon/activemq/tmp -Dactivemq.classpath=/home/dragon/activemq/conf; -Dactivemq.home=/home/dragon/activemq -Dactivemq.base=/home/dragon/activemq -Dactivemq.conf=/home/dragon/activemq/conf -Dactivemq.data=/home/dragon/activemq/data
Extensions classpath:
  [/home/dragon/activemq/lib,/home/dragon/activemq/lib/camel,/home/dragon/activemq/lib/optional,/home/dragon/activemq/lib/web,/home/dragon/activemq/lib/extra]
ACTIVEMQ_HOME: /home/dragon/activemq
ACTIVEMQ_BASE: /home/dragon/activemq
ACTIVEMQ_CONF: /home/dragon/activemq/conf
ACTIVEMQ_DATA: /home/dragon/activemq/data
Loading message broker from: xbean:activemq.xml
 INFO | Refreshing org.Apache.activemq.xbean.XBeanBrokerFactory$1@a842913: startup date [Fri Oct 07 08:14:02 IST 2016]; root of context hierarchy
 INFO | PListStore:[/home/dragon/activemq/data/divinedragonbox/tmp_storage] started
 INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[/home/dragon/jms_store]
 INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:15526/jmxrmi
 INFO | KahaDB is version 5
 INFO | Recovering from the journal ...
 INFO | Recovery replayed 76 operations from the journal in 0.032 seconds.
 INFO | Apache ActiveMQ 5.11.1 (divinedragonbox, ID:divinedragonbox-60914-1475824445361-0:1) is starting
 INFO | Listening for connections at: tcp://divinedragonbox:15511
 INFO | Connector openwire started
 INFO | Listening for connections at: stomp://divinedragonbox:15512
 INFO | Connector stomp started
 INFO | Listening for connections at: ssl://divinedragonbox:15571
 INFO | Connector ssl started
 INFO | Establishing network connection from vm://divinedragonbox?async=false&network=true to ssl://localhost:15571
 INFO | Connector vm://divinedragonbox started
 INFO | Network Connector DiscoveryNetworkConnector:Host1 and Host2:BrokerService[divinedragonbox] started
 INFO | Apache ActiveMQ 5.11.1 (divinedragonbox, ID:divinedragonbox-60914-1475824445361-0:1) started
 INFO | For help or more information please see: http://activemq.Apache.org
 INFO | divinedragonbox Shutting down
 INFO | Connector vm://divinedragonbox stopped
 INFO | divinedragonbox bridge to Unknown stopped
 WARN | Transport Connection to: tcp://127.0.0.1:40890 failed: Java.io.EOFException
 INFO | ActiveMQ WebConsole available at http://localhost:15521/
 INFO | Initializing Spring FrameworkServlet 'dispatcher'
 INFO | jolokia-agent: No access restrictor found at classpath:/jolokia-access.xml, access to all MBeans is allowed

メッセージのTRACEを有効にし、ログファイルに次の例外スニペットを取得しました。

2016-10-07 08:15:45,378 | TRACE | Execute[ActiveMQ ForwardingBridge StopTask] runnable: org.Apache.activemq.network.DemandForwardingBridgeSupport$4@b3f451d | org.Apache.activemq.thread.TaskRunnerFactory | ActiveMQ BrokerService[divinedragonbox] Task-4
2016-10-07 08:15:45,378 | TRACE | Created and running thread[ActiveMQ ForwardingBridge StopTask-5]: Thread[ActiveMQ ForwardingBridge StopTask-5,5,main] | org.Apache.activemq.thread.TaskRunnerFactory | ActiveMQ BrokerService[divinedragonbox] Task-4
2016-10-07 08:15:45,379 | DEBUG | Caught exception sending shutdown | org.Apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ ForwardingBridge StopTask-5
org.Apache.activemq.transport.TransportDisposedIOException: Transport disposed.
    at org.Apache.activemq.transport.vm.VMTransport.oneway(VMTransport.Java:82)[activemq-broker-5.11.1.jar:5.11.1]
    at org.Apache.activemq.transport.MutexTransport.oneway(MutexTransport.Java:68)[activemq-client-5.11.1.jar:5.11.1]
    at org.Apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.Java:60)[activemq-client-5.11.1.jar:5.11.1]
    at org.Apache.activemq.network.DemandForwardingBridgeSupport$4.run(DemandForwardingBridgeSupport.Java:288)[activemq-broker-5.11.1.jar:5.11.1]
    at Java.lang.Thread.run(Thread.Java:722)[:1.7.0_05]
2016-10-07 08:15:45,380 | DEBUG | Stopping transport ssl://localhost/127.0.0.1:15571 | org.Apache.activemq.transport.tcp.TcpTransport | ActiveMQ BrokerService[divinedragonbox] Task-4
2016-10-07 08:15:45,381 | DEBUG | Initialized TaskRunnerFactory[ActiveMQ Task] using ExecutorService: null | org.Apache.activemq.thread.TaskRunnerFactory | ActiveMQ BrokerService[divinedragonbox] Task-4
2016-10-07 08:15:45,381 | TRACE | Execute[ActiveMQ Task] runnable: org.Apache.activemq.transport.tcp.TcpTransport$1@a1848dc | org.Apache.activemq.thread.TaskRunnerFactory | ActiveMQ BrokerService[divinedragonbox] Task-4
2016-10-07 08:15:45,381 | TRACE | Created and running thread[ActiveMQ Task-1]: Thread[ActiveMQ Task-1,5,main] | org.Apache.activemq.thread.TaskRunnerFactory | ActiveMQ BrokerService[divinedragonbox] Task-4
2016-10-07 08:15:45,382 | TRACE | Closing socket 2a9a5d77[TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: Socket[addr=localhost/127.0.0.1,port=15571,localport=40999]] | org.Apache.activemq.transport.tcp.TcpTransport | ActiveMQ Task-1
2016-10-07 08:15:45,383 | DEBUG | Closed socket 2a9a5d77[TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: Socket[addr=localhost/127.0.0.1,port=15571,localport=40999]] | org.Apache.activemq.transport.tcp.TcpTransport | ActiveMQ Task-1
2016-10-07 08:15:45,384 | INFO  | divinedragonbox bridge to Unknown stopped | org.Apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ BrokerService[divinedragonbox] Task-4
2016-10-07 08:15:45,384 | TRACE | serviceLocalException: disposed true ex | org.Apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ BrokerService[divinedragonbox] Task-4
org.Apache.activemq.transport.TransportDisposedIOException: peer (vm://divinedragonbox#1) stopped.
    at org.Apache.activemq.transport.vm.VMTransport.stop(VMTransport.Java:207)[activemq-broker-5.11.1.jar:5.11.1]
    at org.Apache.activemq.transport.TransportFilter.stop(TransportFilter.Java:65)[activemq-client-5.11.1.jar:5.11.1]
    at org.Apache.activemq.transport.TransportFilter.stop(TransportFilter.Java:65)[activemq-client-5.11.1.jar:5.11.1]
    at org.Apache.activemq.transport.ResponseCorrelator.stop(ResponseCorrelator.Java:132)[activemq-client-5.11.1.jar:5.11.1]
    at org.Apache.activemq.broker.TransportConnection.doStop(TransportConnection.Java:1151)[activemq-broker-5.11.1.jar:5.11.1]
    at org.Apache.activemq.broker.TransportConnection$4.run(TransportConnection.Java:1117)[activemq-broker-5.11.1.jar:5.11.1]
    at Java.lang.Thread.run(Thread.Java:722)[:1.7.0_05]
2016-10-07 08:15:45,384 | DEBUG | Stopped transport: vm://divinedragonbox#0 | org.Apache.activemq.broker.TransportConnection | ActiveMQ BrokerService[divinedragonbox] Task-4
2016-10-07 08:15:45,384 | TRACE | Shutdown timeout: 1 task: Transport Connection to: vm://divinedragonbox#0 | org.Apache.activemq.thread.DedicatedTaskRunner | ActiveMQ BrokerService[divinedragonbox] Task-4
2016-10-07 08:15:45,385 | TRACE | Run task done: Transport Connection to: vm://divinedragonbox#0 | org.Apache.activemq.thread.DedicatedTaskRunner | ActiveMQ Connection Dispatcher: vm://divinedragonbox#0
2016-10-07 08:15:45,385 | DEBUG | Connection Stopped: vm://divinedragonbox#0 | org.Apache.activemq.broker.TransportConnection | ActiveMQ BrokerService[divinedragonbox] Task-4
2016-10-07 08:15:45,385 | TRACE | Shutdown of ExecutorService: Java.util.concurrent.ThreadPoolExecutor@dfe196a[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0] with await termination: 0 millis | org.Apache.activemq.util.ThreadPoolUtils | ActiveMQ Transport: ssl:///127.0.0.1:40999
2016-10-07 08:15:45,385 | DEBUG | Shutting down VM connectors for broker: divinedragonbox | org.Apache.activemq.transport.vm.VMTransportFactory | triggerStartAsyncNetworkBridgeCreation: remoteBroker=ssl://localhost/127.0.0.1:15571, localBroker= vm://divinedragonbox#0
2016-10-07 08:15:45,385 | INFO  | Connector vm://divinedragonbox stopped | org.Apache.activemq.broker.TransportConnector | triggerStartAsyncNetworkBridgeCreation: remoteBroker=ssl://localhost/127.0.0.1:15571, localBroker= vm://divinedragonbox#0
2016-10-07 08:15:45,400 | DEBUG | Shutdown of ExecutorService: Java.util.concurrent.ThreadPoolExecutor@dfe196a[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0] is shutdown: true and terminated: true took: 0.001 seconds. | org.Apache.activemq.util.ThreadPoolUtils | ActiveMQ Transport: ssl:///127.0.0.1:40999
2016-10-07 08:15:45,400 | DEBUG | Transport Connection to: tcp://127.0.0.1:40999 failed: Java.io.EOFException | org.Apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: ssl:///127.0.0.1:40999
Java.io.EOFException
    at Java.io.DataInputStream.readInt(DataInputStream.Java:392)[:1.7.0_05]
    at org.Apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.Java:258)[activemq-client-5.11.1.jar:5.11.1]
    at org.Apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.Java:221)[activemq-client-5.11.1.jar:5.11.1]
    at org.Apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.Java:213)[activemq-client-5.11.1.jar:5.11.1]
    at org.Apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.Java:196)[activemq-client-5.11.1.jar:5.11.1]
    at Java.lang.Thread.run(Thread.Java:722)[:1.7.0_05]
2016-10-07 08:15:45,401 | DEBUG | Unregistering MBean org.Apache.activemq:type=Broker,brokerName=divinedragonbox,connector=clientConnectors,connectorName=ssl,connectionViewType=remoteAddress,connectionName=tcp_//127.0.0.1_40999 | org.Apache.activemq.broker.jmx.ManagementContext | ActiveMQ Transport: ssl:///127.0.0.1:40999
2016-10-07 08:15:45,401 | TRACE | Execute[ActiveMQ BrokerService[divinedragonbox] Task] runnable: org.Apache.activemq.broker.TransportConnection$4@5039f4d3 | org.Apache.activemq.thread.TaskRunnerFactory | ActiveMQ Transport: ssl:///127.0.0.1:40999
2016-10-07 08:15:45,401 | TRACE | Created and running thread[ActiveMQ BrokerService[divinedragonbox] Task-6]: Thread[ActiveMQ BrokerService[divinedragonbox] Task-6,8,main] | org.Apache.activemq.thread.TaskRunnerFactory | ActiveMQ Transport: ssl:///127.0.0.1:40999

誰かがこれらの例外がスローされる理由を教えてもらえますか?

誰かがより詳細に調べる必要がある場合は、ログファイル全体を提供できます。

9
divinedragon

だから、私はついにこの根本原因に到達しました。このWARNINGは、 networkConnector が機能し構成されているために発生します。私はここでactivemqコミュニティにこれを投稿しました- http://activemq.2283324.n4.nabble.com/Java-io-EOFException-when-ActiveMQ-starts-td4717598.html

networkConnectorを使用すると、activemqは設定されたブローカーへの接続を試みます。私の場合、ブローカーに自己接続しようとしていたため、接続を拒否していました。同じことがコミュニティ内のTimによって指摘されました。

それ自体に接続された静的なnetworkConnectorを使用してブローカーを設定しようとしたことはありません(なぜだろう、それは役に立たない設定です)が、ブローカーがその自己接続を拒否したとしても驚かないでしょう。 。また、提案されたように、SSL構成に何か問題がある可能性もあります。メーリングリストのディスカッションでは、トラストストアがキーストアを信頼し、証明書が適切に提示されているかどうかを確認する良い方法はありません。それはバイナリコンテンツに関するものであり、それを公開して共有するべきではありませんが、設定によってSSL構成をテストできますJMS_X_SITE_CSV_URLが相互にポイントされている2つのブローカー(テスト環境)その構成がEOFExceptionsを提供する場合、tcpトランスポートの使用に切り替えて、何が起こるかを確認します。 sslトランスポートでエラーが発生し、tcpトランスポートでエラーが発生した場合は、キーに何らかの問題がある可能性があります。

現在の設定(networkConnectionのみがstatic:ssl:one to selfであるブローカーがある場合)に関しては、それは有用な設定ではありません(自分自身にnetworkConnectorを設定しても意味がありません)。削除すると、懸念しているWARNログ行が削除されます。ですから、「構成はまだ問題ないと思う」という声明に同意しません。達成しようとしていると言った目的に役立つものに切り替えます(static:transportの代わりにdiscovery:transportを使用するか、static:transportを引き続き使用する場合はクロスサイトサーバーをリストします)または取り出して、WARN行を削除します。

したがって、networkConnectorは、単一のブローカーシステムである場合、本質的には役に立ちません。マルチブローカーの展開でより意味があり、各ブローカーの自己を個別に除き、すべてのブローカーが構成されます。

networkConnector構成を単一ブローカーのデプロイメントで機能させるために、設定しなければならなかった値はurl="static://(ssl://divinedragonbox:7031)..."(IPアドレスまたはlocalhostの代わりにホスト名)でした。これにより、WARNINGが削除されます。

7
divinedragon

これらのEOFExceptionsは、クライアントがブローカーに接続し、接続を完全に閉じずに切断することを示します。典型的な原因には、tcp/ip監視エージェントと誤ってコーディングされたクライアントが含まれます。

4
Matt Pavlovich