こちら で提供されている Jolokia Spring サポートのリファレンス ドキュメントに従って、Spring アプリケーションで Jolokia JVM エージェントを構成しようとしています。
jolokia-spring-1.3.1
私はmavenの依存関係として追加しました。以下は私の春のアプリケーションコンテキストです:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jolokia="http://www.jolokia.org/jolokia-spring/schema/config"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.jolokia.org/jolokia-spring/schema/config http://www.jolokia.org/jolokia-spring/schema/config/jolokia-config.xsd">
<jolokia:agent>
<jolokia:config host="localhost" port="15151" debug="true" />
</jolokia:agent>
コードを実行すると、コンソールに次の出力が表示されますが、Jolokia エージェントは作成されません。
I> No access restrictor found, access to all MBean is allowed
I> Cannot join multicast group on NIF utun0: Can't assign requested address
I> Cannot join multicast group on NIF awdl0: Can't assign requested address
D> /192.168.1.247<-- Listening for queries
D> /192.168.1.247<-- Waiting
I> Cannot join multicast group on NIF utun0: Can't assign requested address
I> Cannot join multicast group on NIF awdl0: Can't assign requested address
D> /127.0.0.1<-- Listening for queries
D> /127.0.0.1<-- Waiting
http://127.0.0.1:15151/jolokia/
を参照すると、次のように表示されます。
{"request":{"type":"version"},"value":{"agent":"1.3.1","protocol":"7.2","config":{"maxDepth":"15","discoveryEnabled":"true","maxCollectionSize":"0","agentId":"192.168.1.247-3124-78dd667e-jvm","debug":"true","agentType":"jvm","historyMaxEntries":"10","agentContext":"\/jolokia","maxObjects":"0","debugMaxEntries":"100"},"info":{}},"timestamp":1434904598,"status":200}
hawtioを使用して使用可能な JVM を一覧表示すると、作成された JVM が表示されますが、[エージェント URL] の下は空白です。hawtio でエージェントを起動しようとすると、コンソールに次のエラーが表示されます。
I> jolokia:type=Config is already registered. Adding it with jolokia:type=Config,uuid=8bd5c6d9-cbf0-4569-b588-087f5c41522e, but you should revise your setup in order to either use a qualifier or ensure, that only a single agent gets registered (otherwise history functionality might not work)
spring XML を使用する代わりに、次の Java オプションを使用してコードを実行します。
-javaagent:/Users/steve/jolokia-jvm-1.3.1-agent.jar=port=15000
次に、エージェントが正しく開始され、使用可能になります。これは、次のコンソール出力によって確認されます。
I> No access restrictor found, access to all MBean is allowed
I> Cannot join multicast group on NIF utun0: Can't assign requested address
I> Cannot join multicast group on NIF awdl0: Can't assign requested address
I> Cannot join multicast group on NIF utun0: Can't assign requested address
I> Cannot join multicast group on NIF awdl0: Can't assign requested address
Jolokia: Agent started with URL http://127.0.0.1:15000/jolokia/
エージェントとその正しいポート 15000 をリストする hawtio と同様に。
また、リファレンス ドキュメントで提案されているように、Jolokia 名前空間を使用せずに Spring 構成を書き直そうとしました。次に例を示します。
<bean name="server" id="jolokia" class="org.jolokia.jvmagent.spring.SpringJolokiaAgent">
<property name="lookupConfig" value="false"/>
<property name="systemPropertiesMode" value="never"/>
<property name="config">
<bean class="org.jolokia.jvmagent.spring.SpringJolokiaConfigHolder">
<property name="config">
<util:map>
<entry key="autoStart" value="true"/>
<entry key="host" value="0.0.0.0"/>
<entry key="port" value="15151"/>
</util:map>
</property>
</bean>
</property>
しかし、これでも同じ問題が発生します。
私の質問は、Jolokia エージェントが失敗する原因となっている Spring 構成で何が間違っているのでしょうか?
参考までに、Spring のバージョンは 4.1.6 で、JDK は 1.8.0_45 です。
ありがとう