http://blog.nanthrax.net/2011/11/apache-karaf-cellar-and-dosgi/の下にある Karaf Cellar の例に従いました。
サービス (Bundle1)、サービス実装 (Bundle2)、クライアント (Bundle3) の 3 つの OSGi バンドルを作成しました。(Bundle1) と (Bundle2) を 1 つの karaf インスタンスにデプロイし、(Bundle1) と (Bundle3) を別の karaf インスタンスにデプロイして、2 つの karaf コンテナーを異なるマシンで実行しています。例に示されているように、すべてが正常に機能しました。Karaf コンテナー 2 からクライアント バンドルを削除し、設計図に記載されているキャメル ルート経由でサービスを呼び出したいと考えました。
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
<reference id="myService" interface="org.service.cellar.EchoService" timeout="20000" availability="optional" />
<camelContext id="camel" trace="false"
xmlns="http://camel.apache.org/schema/blueprint">
<route id="client">
<from uri="timer://foo?fixedRate=true&period=10000" />
<bean ref="myService" method="process" />
<log message=" Invoking Service : ${body}" />
</route>
</camelContext>
</blueprint>
上記のブループリントを karaf コンテナー 2 に展開するとすぐに、karaf コンテナー 1 で次の例外が発生します。このエラーの原因を特定できません。この問題に関するコメントをお待ちしております。
ありがとうございました。
2012-10-15 13:24:40,477 | エラー | プール-11-スレッド-7 | イベントディスパッチタスク | 78 - org.apache.karaf.cellar.core - 2.2.4 | タスクのディスパッチ中にエラーが発生しました java.lang.NullPointerException org.apache.karaf.cellar.dosgi.RemoteServiceCallHandler.handle (RemoteServiceCallHandler.java:74) [83:org.apache.karaf.cellar.dosgi:2.2.4] で org.apache.karaf.cellar.dosgi.RemoteServiceCallHandler.handle (RemoteServiceCallHandler.java:34) [83:org.apache.karaf.cellar.dosgi:2.2.4] で sun.reflect.GeneratedMethodAccessor31.invoke (不明なソース) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_35] java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_35] org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:50)[7:org.apache.aries.proxy:0.3.1] で org.apache.aries.proxy.impl.DefaultWrapper.invoke(DefaultWrapper.java:31) [7:org.apache.aries.proxy:0.3.1] で org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:78)[7:org.apache.aries.proxy:0.3.1]で $Proxy24.handle (不明なソース) [78:org.apache.karaf.cellar.core:2.2.4] で org.apache.karaf.cellar.core.event.EventDispatchTask.run(EventDispatchTask.java:77)[78:org.apache.karaf.cellar.core:2.2.4]で java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_35] で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_35] で java.lang.Thread.run(Thread.java:662)[:1.6.0_35]で