6

Servicemix4.3.1でApacheAries0.2を使用しており、cm:managed-service-factoryを作成しています。.cfgファイルを使用したサービスの作成は正常に機能しますが( #ARIES-584を除く)、.cfgファイルのプロパティはサービスオブジェクトに挿入されません。それらはConfigAdminで適切に設定され、Beanセッターメソッドだけが構成ファイルの値に対して呼び出されることはありません。

cm:managed-propertiesなど、managed-service-factory内にネストされたものを使用する必要があると考えていましたが、別のpidが必要になるため、正しくないようです。

プロパティタグを入れないと、値が設定されません。プロパティタグを使用すると、デフォルト値のみが設定されますが、実際の構成ファイル値は設定されません。

マネージドサービスファクトリ内のマネージドプロパティを表示しないblueprint-sample.xmlを除いて、AriesCMサブプロジェクトの使用に関するドキュメントが見つかりません。私は実際にServicemixを使おうとしていますが、ドキュメントの欠落、機能の破損または欠落、またはコア機能に影響を与えるバグが隅々にあります。

Springgeminiの両方のドキュメントは、マネージドサービスファクトリの実装がマネージドプロパティとしても機能する必要があることを示しています。


foo.xml:

<blueprint>
  <cm:managed-service-factory id="myfoo-msf" factory-pid="my.msf" interface="my.IFoo">
    <cm:managed-component class="my.Foo"> 
      <property name="name" value="default />
    </cm:managed-component>
  </cm:managed-service-factory>
</blueprint>

IFoo.java

package my;
public interface IFoo {
  public String getName();
  public void setName(String name);
}

Foo.java

package my;
public class Foo implements IFoo {
  private String name;
  public void setName(String name) {
    this.name = name;
    System.out.println("name set to: " + name);
  }
  public String getName() {
    return name;
  }
}

my.msf-1.cfg

name=name1

my.msf-2.cfg

name=name2

System.out

name set to default
name set to default

config:proplist

service.pid = my.msf.xxxxxxx-xx-xx-xxxxxxxxxxxxxxx
name = name1
service.factoryPid = my.msf

service.pid = my.msf.yyyyyyy-yy-yy-yyyyyyyyyyyyyyy
name = name2
service.factoryPid = my.msf
4

1 に答える 1