我在Servicemix 4.3.1中使用Apache Aries 0.2並創建了cm:managed-service-factory。使用.cfg文件創建服務可以正常工作(#ARIES-584除外),但.cfg文件中的屬性不會注入到服務對象中。他們確實在ConfigAdmin中正確設置,只是我的bean setter方法永遠不會爲我的配置文件中的值調用。白羊座託管服務工廠是否也管理物業?
我在想我也許應該使用cm:managed-properties或類似嵌套在託管服務工廠內的東西,但這需要單獨的pid,所以看起來不正確。
如果我沒有放置屬性標籤,那麼沒有設置任何值。使用屬性標籤,然後只設置默認值,但從來沒有實際的配置文件值。
我找不到使用白羊座CM子項目的任何文檔,blueprint-sample.xml除外,它不顯示託管服務工廠內的託管屬性。我一直在嘗試使用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
配置: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
我試過這個使用Spring和屬性從配置文件正確加載到我的服務使用setter方法...我甚至沒有把屬性標記。我會使用Spring,然後,但我不能用Spring來做服務屬性:(...... Spring#OSGI-747。爲什麼沒有一個這樣的工作實現? –
我試過了DS,並且它似乎工作。 –