Tôi đã tạo một gói OSGi với dịch vụ tiếp xúc (khai báo). Nếu tôi, khi kích hoạt được gọi, thông báo rằng một cái gì đó là không ổn thỏa như vậy mà tôi không thể cung cấp dịch vụ, tôi cần phải ngăn chặn nó được tiếp xúc. Tại thời điểm này chức năng kích hoạt trông giống như vậy:Cách thích hợp để vô hiệu hóa dịch vụ OSGi khi bắt đầu dịch vụ là gì?
public void activate(ComponentContext context, Map<String, Object> properties) {
pid = (String) properties.get(Constants.SERVICE_PID);
try {
...
}
catch(Exception e) {
context.disableComponent(pid);
}
}
Một lựa chọn khác là chỉ cần quấn/tuyên truyền các ngoại lệ (hoặc ném một cái mới, tùy thuộc) như thế này:
public void activate(ComponentContext context, Map<String, Object> properties) {
try {
...
}
catch(Exception e) {
throw new ComponentException("Some reason");
}
}
tôi không thể tìm thấy hành vi chính xác được chỉ định trong phần về dịch vụ khai báo trong số OSGi Service Platform Service Compendium, nhưng tôi có thể thiếu một số thứ gì đó