OSGI enRouteでApache CXFを使用しようとしています。私がcfg.xmlファイルを使用せず、代わりにAPIを使用してサービスエンドポイントをスピンアップすることを望んでいるというのはひどいことです。以下はそのような例である:API経由で新しいCXFバスを作成
InvolvedPartySoap12EndpointImpl involvedPartyServiceImpl = new InvolvedPartySoap12EndpointImpl();
ServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
svrFactory.setServiceClass(InvolvedPartyPortType.class);
svrFactory.setAddress("/bin/InvolvedParty");
svrFactory.setBus(bus);
svrFactory.setServiceBean(involvedPartyServiceImpl);
_server = svrFactory.create();
私が午前問題は、このように私は破壊/対応バンドルが有効/無効されるたびにバスを作成することができ、各OSGiバンドルのための明確なCXFバスを作成しています。
問題は、私はちょうど作成し、CXFバスを破壊するためのAPIが表示されないということである:以下Karafコマンドを複製することも目標となります。上記のKarafコードはenRouteで動作しないようです。
バス内にcfg.xmlファイルを作成してバスを作成することは可能ですが、特定のエイリアスを持つバスをフェッチするためのAPIは表示されません。ああ。
次のリンクは有望に見えたが、CXFNonSpringServletのサブクラスに適応したときに...私は、対応するCXFバスを得ることはありません、また私は、APIを介して1を作成するように見えることができます。
registering servlet in OSGi that receives parameters
ですから、私の質問は... OSGI内のAPIを介してCXFバス(および対応するサーブレット)をフェッチ、作成、破棄することに成功した人はいますか?
おかげで、 ランディ
私は実際にこのようなものを試しましたが、成功しませんでした。 HTTPServiceおよび/またはCXFバンドルがアクティブになる前にBusFactory.newInstance()。createBus()を呼び出すと、新しいバスが自動的に '/ cxf'エイリアスに関連付けられます。後でCXFバンドルがロードされると、そのコードは新しいバンドルを作成し、そのバンドルを '/ cxf'エイリアスに関連付けます。これにより競合が発生します。私は、この重複したエイリアス例外を回避し、このスレッドでその解決策を記録するアプローチを考え出しました。 –