私のチームはApache Karafの上に構築された古いコードベースを継承し、いくつかのJAX-WSサービスを持っています。現在、Beanに注入されているわけではないオブジェクトに問題があります。WebServiceContext(時には)OSGiが挿入されていない - Apache Karaf
当社のサービスは、以下のように定義されています。我々はすでに我々がオンラインで見つけるいくつかのオプションを試してみました
@WebService(serviceName = "XXXSoapService", portName = "XXXSoapPort", endpointInterface = "com.XXX.service.XXXSoapInterface", targetNamespace = "http://xxx.xx/")
@BindingType(value=SOAPBinding.SOAP12HTTP_BINDING)
public class XXXSoapService implements XXXSoapInterface {
@Resource
WebServiceContext context;
public void doXXX() {
context.getMessageContext(); // throws nullpointerexception
}
}
。私たちはセッター注入を試みました。リソースの名前を指定しようとしましたが、endpointInterfaceが設定されていることを確認しました。
しかし、私たちが何をするにせよ、ほとんどの場合、サービスはWebServiceContextを注入することなくインスタンス化されます。時には動作し、KARAFがどのように動作しているかと考えなければならず、利用可能になる前にWebServiceContextを注入しようとします。
featuresBootセクションのorg.apache.karaf.features.xmlにCXFがあります。
OSGIとKarafについての私の理解は非常に基本的なものなので、何を探したらいいのか分かりません。
WebServiceContextがほとんどの時間に注入されない理由については誰も知りませんが、何回か注入されていますか?
編集:私はそれについて読んでてきた、そして私がApacheの青写真を抱えている例外はそれとは何かを持っている可能性があるようだ。
[Blueprint Extender: 3] ERROR org.apache.aries.blueprint.container.BlueprintContainerImpl - Unable
バンドルのBlueprintコンテナーを開始する io.hawt.hawtio-karaf-terminal/2.0.0未解決の依存関係のため [(objectClass = org.apache.felix.service.threadio.ThreadIO)、 (objectClass = org.apache.felix.service.command.CommandProcessor )] java.util.concurrent.TimeoutException at org.apache.aries.blueprint.container.Blue printContainerImpl $ 1.run(BlueprintContainerImpl.java:371) at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48) at java.util.concurrent.Executors $ RunnableAdapter.call java.util.concurrent.FutureTask.run(FutureTask.java:266)で(Executors.java:511) java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180)でのjavaで。 util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)java.util.concurrent.ThreadPoolExecutor $ Worker.runでjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) で (ThreadPoolExecutor。 java:624) at java.lang.Thread.run(スレッド.java:748)
このモジュールの依存関係を見ていきますが、その理由が考えられますか?他のアイデア?