は、私が2つのMavenを持っては性質が
- の下に与えられたシナリオを行ってくださいOSGIコンテナ内部の依存関係のプロジェクトのためにファイルを読み込むことができませんABC-共通とABC-サービス
- ABC-突き出サービスは、abc-commonプロジェクトに依存しています。
ABC-共通は、プロパティから読んで次のように
myConfig.properties
という名前のファイル:class PropertiesUtil { ..... Properties props = new Properties(); props.load(PropertiesUtil.class.getClassLoader().getResourceAsStream("myConfig.properties")); .... }
私はプロジェクトのいずれかでダミーのmainメソッドを作成することによって、テストするときには、正常に動作します。
しかし、このプロジェクトをOSGIコンテナ(JBoss Fuse)にデプロイすると、動作しません。主な理由は、OSGIコンテナでPropertiesUtil.class.getLoader()
がabc-serviceプロジェクトに対応するバンドルを参照しており、そのプロジェクトからすべてのファイルを読み取ることができますが、abc-commonプロジェクトからは読み取れません。
私のコードを変更すると、どのようにしてOSGIコンテナのabc-commonプロジェクトのクラスパスからプロパティを読み取ることができるのですか?私は依存関係としてABC-サービスとABC-共通の両方バンドルを示していますkaraf機能として私のプロジェクトを展開しています
注 。ロードを許可するパッケージの輸出|
はまた、私は
Thread.currentThread().getContextClassLoader().getResourceAsStream("myConfig.properties")
と
FrameworkUtil.getBundle(PropertiesUtil.class).getEntry("myConfig.properties.")
のような種々の変形を試みたが、それらのどれもインポートを使用する必要がOSGiのでは、実際に
プロパティファイルをFuseのetcフォルダに入れますか? –
@SoucianceEqdamRashti。いいえ。プロジェクトの中にプロパティファイルを追加するだけです。&は.jarファイルに存在します。 – niyasc
'/ etc'フォルダとファブリックプロファイルの両方にプロパティファイルを追加しようとしました。両方のアプローチはうまくいきませんでした。 – niyasc