Estoy usando Apache Aries 0.2 en Servicemix 4.3.1 y creo un cm: managed-service-factory. La creación de los servicios con archivos .cfg funciona bien (excepto en el #ARIES-584), pero las propiedades del archivo .cfg no se inyectan en el objeto de servicio. Se configuran correctamente en ConfigAdmin, solo mis métodos setter de bean nunca reciben llamadas para los valores en mi archivo de configuración.¿Aries managed-service-factory también administra propiedades?
Estaba pensando que debería usar un cm: managed-properties o algo así anidado dentro de mi fábrica de servicio administrado, pero eso requeriría un pid por separado, por lo que no parece correcto.
Si no coloco la etiqueta de propiedad, no se establece ningún valor. Con la etiqueta de propiedad, solo se establece el valor predeterminado, pero nunca el valor real del archivo de configuración.
No puedo encontrar ninguna documentación para el uso del subproyecto Aries CM, excepto por blueprint-sample.xml, que no muestra las propiedades administradas dentro de una fábrica de servicios gestionados. Realmente he estado tratando de usar Servicemix, pero en cada esquina falta documentación, funciones rotas o faltantes, o errores que afectan la funcionalidad central.
Tanto la documentación de spring como la de gemini indican que las implementaciones de fábrica de los servicios gestionados también deberían funcionar como propiedades administradas.
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
Intenté usar Spring y las propiedades se cargaron correctamente desde el archivo de configuración en mi servicio utilizando el método setter ... Ni siquiera tuve que poner la etiqueta de propiedad. Utilizaría Spring, luego , pero no puedo hacer las propiedades de servicio con Spring :(... Spring # OSGI-747. ¿Por qué no hay una sola implementación de trabajo de esto? –
Intenté DS para esto, y parece que funciona. –