public interface OrderService {
void createOrder(String customerId, double amount);
List<Order> getOrders(String customerId);
void updateOrderStatus(int orderId, String status);
}
@Named("orderService1")
@Service
public class OrderServiceImpl1 implements OrderService {
}
@Named("orderService2")
@Service
public class OrderServiceImpl2 implements OrderService {
}
public class OrderQueryComponent {
@Inject
@Named("orderService1")
private OrderService orderService;
}
Bundle-Name: OrderManagement
Bundle-SymbolicName: com.example.order
Bundle-Version: 1.0.0
Import-Package: javax.inject;version="1.0.0",
org.osgi.framework;version="1.8.0"
Provide-Capability: osgi.service;objectClass=com.example.order.OrderService
Service-Component: OSGI-INF/com.example.order.OrderServiceImpl1.xml,
OSGI-INF/com.example.order.OrderServiceImpl2.xml
- OSGI-INF/com.example.order.OrderServiceImpl1.xml:
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0">
<implementation class="com.example.order.OrderServiceImpl1" />
<service>
<provide interface="com.example.order.OrderService" />
</service>
</scr:component>
- OSGI-INF/com.example.order.OrderServiceImpl2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0">
<implementation class="com.example.order.OrderServiceImpl2" />
<service>
<provide interface="com.example.order.OrderService" />
</service>
</scr:component>