私は、1 つの OSGi バンドルで生成されたデータの一部を REST インターフェースで公開して、後で誰でも典型的な http 要求で消費できるようにしようとしています。これを行うために、apache-cxf、JAX-RS、および Jetty を組み合わせて使用しています (主にテスト目的で)。
私のアプリケーション全体は、次の 2 つの方法で配布されます。
- コア: OSGi フレームワークとして一連の最小限のバンドルを実行します。
- Full: Core + に加えて、Eclipse 内でグラフィカルに使用されるプラグインのセット。
コア起動構成では、これを問題なく機能させることができますが、マニフェストを見てください。
Require-Bundle: cxf-dosgi-ri-singlebundle-distribution;bundle-version="1.3.1",org.eclipse.core.runtime, org.eclipse.osgi.services;bundle-version="3.3.0", org.mortbay.jetty.server;bundle-version="6.1.23", org.mortbay.jetty.util;bundle-version="6.1.23"
フル ディストリビューションを起動しようとすると、jetty サーバーが起動していないように見えるため、RESTful サービスが正しく機能していません。完全な配布には、主にウィザード、パースペクティブなどに関連する、より多くのプラグインが付属しています。この問題の根本原因は何らかの形で cxf-dosgi-ri-singlebundle-distribution バンドルに関連しており、このバンドルの自動開始をデフォルトではなく true に「強制」することで対処できます (下の画像を確認してください)。
これは問題ありませんが、私の質問は...なぜこれが起こっているのですか? 次に、最も重要なこととして、更新サイトを介してフル ディストリビューションを配布します。これにより、ユーザーはそれをダウンロードし、パースペクティブを開いて使用を開始できます。つまり、これは最終的なディストリビューションに影響しますか? 更新サイトの apache-cxf バンドルに対して、この auto-start=true を制御する方法はありますか?
私が自分自身を明確にすることができることを願っています...
ありがとう!