Tôi đang sử dụng Apache Aries 0.2 trong Servicemix 4.3.1 và tạo cm: managed-service-factory. Việc tạo các dịch vụ với các tệp .cfg hoạt động tốt (ngoại trừ #ARIES-584), nhưng các thuộc tính từ tệp .cfg không được tiêm vào đối tượng dịch vụ. Chúng được thiết lập đúng trong ConfigAdmin, chỉ các phương thức setter bean của tôi không bao giờ được gọi cho các giá trị trong tệp cấu hình của tôi. Tôi đã nghĩ tôi có thể sử dụng một cm: quản lý tài sản hoặc một cái gì đó giống như lồng nhau bên trong nhà máy dịch vụ quản lý của tôi, nhưng điều đó sẽ yêu cầu một pid riêng biệt, do đó, không có vẻ đúng.Nhà máy quản lý-dịch vụ của Aries có quản lý tài sản không?
Nếu tôi không đặt thẻ thuộc tính vào, thì không có giá trị nào được đặt. Với thẻ thuộc tính, thì chỉ giá trị mặc định được đặt, nhưng không bao giờ là giá trị tệp cấu hình thực.
Tôi không thể tìm thấy bất kỳ tài liệu nào để sử dụng tiểu dự án Aries CM, ngoại trừ blueprint-sample.xml, không hiển thị thuộc tính được quản lý bên trong nhà máy dịch vụ được quản lý. Tôi đã thực sự cố gắng sử dụng Servicemix, nhưng xung quanh mọi góc đều thiếu tài liệu, các tính năng bị hỏng hoặc bị thiếu hoặc các lỗi ảnh hưởng đến chức năng cốt lõi.
Cả tài liệu spring và gemini chỉ ra rằng triển khai nhà máy dịch vụ được quản lý của họ cũng phải hoạt động như thuộc tính được quản lý.
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
Tôi đã thử tính năng này bằng cách sử dụng Spring và các thuộc tính được tải đúng từ tệp cấu hình vào dịch vụ của tôi bằng phương thức setter ... Tôi thậm chí không phải đặt thẻ thuộc tính vào. , nhưng tôi không thể làm dịch vụ tài sản với mùa xuân: (... Spring # OSGI-747. Tại sao không có một thực hiện làm việc duy nhất này. –
Tôi đã thử DS cho điều này, và nó có vẻ làm việc. –