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を使おうとしていますが、ドキュメントの欠落、機能の破損または欠落、またはコア機能に影響を与えるバグが隅々にあります。
Springとgeminiの両方のドキュメントは、マネージドサービスファクトリの実装がマネージドプロパティとしても機能する必要があることを示しています。
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