2011-09-16 9 views
1

私はCXF OSGiバンドルをkarafコンテナに配備しました。いくつかのエンドポイントはそれぞれバンドルされています。エンドポイントは、JAX-RSとJAX-WSの組み合わせです。 JOSSOを使用してエンドポイントでセキュリティを有効にしたいので、そうするためにサーブレットフィルタを登録する必要があります。明らかに、フィルタを宣言するweb.xmlがないので、OSGiサービスレジストリに登録する必要があります。CXF OSGiバンドル - CXFServletに対するフィルタを登録しますか?

私は、pax-web httpホワイトボードを使用してフィルタを登録しようとしましたが、doFilterメソッドは呼び出されません。私は、分散OSGI cxf実装に、フィルタでorg.apache.cxf.httpservice.filterプロパティをtrueに設定し、pax-webホワイトボードを混同しないようにservletNamesにダミー文字列を指定するための規定があることに気付きました。サーブレット・フィルターを登録するために標準的なCXF(非分散)OSGiバンドルに似たものがありますか?

答えて

0

私は多くの掘削の後、Felix + PAX WebでCXFサーブレットにフィルタを設定することができました。そのトリックは、CXFバンドル内からフィルタを登録することです(バンドルごとに異なるhttpコンテキストがあります)。

私のコードでは、getBundles()というバンドルコンテキストを取り出し、cxfバンドルに配置し、CXFバンドルのバンドルコンテキストを取得しました。次に、CXFバンドルのコンテキストにフィルタを登録しました。今はとても汚いと感じますが、うまくいきます。

私は、PAXのJettyサーバーを構成するためのフレグレントバンドルを作成することを推奨していることを思い出しましたが、これはおそらくフィルタの登録にも役立ちます。しかし、現時点ではプロジェクトで別のアーティファクトを作成したくありませんでした。

関連する問題