2017-03-07 1 views
0

は、私が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のでは、実際に

+0

プロパティファイルをFuseのetcフォルダに入れますか? –

+0

@SoucianceEqdamRashti。いいえ。プロジェクトの中にプロパティファイルを追加するだけです。&は.jarファイルに存在します。 – niyasc

+0

'/ etc'フォルダとファブリックプロファイルの両方にプロパティファイルを追加しようとしました。両方のアプローチはうまくいきませんでした。 – niyasc

答えて

2

を働いていません他のバンドルからのリソースプロパティー・ファイルを、そのバンドルからエクスポートするパッケージに入れます。そして、もう一方のバンドルから、そのパッケージをインポートします。これで、クラスパスからリソースをロードすることができます。

+0

それでした。私は、実際には、メインプロジェクトのエクスポートセクションにいくつかのランダムパッケージをエクスポートして、ヒューズの依存関係の問題を解決していました。 – niyasc