2016-05-06 3 views
0

Karaf Blueprint DIおよびOSGi Bundlesを使用してクラスに外部データを注入しようとしています。OSGi Karafで.cfgファイルの内容をリロードし、各クラスでBlueprintを使用します。

設定ファイルは、Karafホームの下など/ com.company.feature.config.cfgに位置しており、それは、このパラメータを含んでいる

attr1=test1私の目標は、このパラメータにはMyClassのオブジェクトが呼び出されるたびに使用することです

または使用される。ファイルは赤です。ファイルがKarafの実行中に変更されないことに注意してください。

私の問題は、バンドルをインストールまたは更新した後で、コンソールの値が表示されることがあります。

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
      xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"... > 
    ... 
    <!-- 
      The file is located on etc/com.company.feature.config.cfg under Karaf, 
      and it contains "attr1=test1" 
     --> 
    <cm:property-placeholder persistent-id="com.company.feature.config" update-strategy="reload">   
     <cm:default-properties> 
      <cm:property name="attr1" value=""/> 
     </cm:default-properties> 
    </cm:property-placeholder> 

    <bean id="my-bean" class="package.MyClass" init-method="init"> 
     <property name="attribute" value="${attr1}" /> 
    </bean> 
</blueprint> 

ジャワMyClassのクラス:

このクラスのオブジェクトが呼び出されたときに、この後に、値がnull

青写真構成、OSGI-INF /青写真/のcontext.xmlに設定されています

class MyClass { 
    private String attribute; 

    //getter and setter 

    public MyClass(){ 
     init(); 
    } 

    private void init(){ 
     System.out.println("data : " + attribute); 
    } 
} 

Karaf出力:

[email protected]()> data : null 

答えて

2

あなたはconstの中のinitを呼び出しますルクター。この時点で、属性はまだ設定されていません。 この呼び出しを削除すると正常に動作します。

initはプライベートである可能性があります。青写真がinitメソッドとして呼び出せるかどうかはわかりません。

関連する問題