@Component
@Service(CalculatorService.class)
public class CalculatorServiceImpl implements CalculatorService {
private Logger logger = LoggerFactory.getLogger(CalculatorServiceImpl.class);
@Reference
private AdditionService additionService;
@Reference
private SubtractionService subtractionService;
@Activate
protected void activate() {
logger.info("CalculatorService activated.");
}
@Deactivate
protected void deactivate() {
logger.info("CalculatorService deactivated.");
}
@Modified
protected void modified() {
logger.info("CalculatorService modified.");
}
@Override
public int add(int a, int b) {
return additionService.add(a, b);
}
@Override
public int subtract(int a, int b) {
return subtractionService.subtract(a, b);
}
}
<dependencies>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
Service-Component: OSGI-INF/*.xml
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" name="com.example.CalculatorServiceImpl">
<implementation class="com.example.CalculatorServiceImpl"/>
<service>
<provide interface="com.example.CalculatorService"/>
</service>
<reference name="additionService" interface="com.example.AdditionService" cardinality="1..1" policy="static" bind="setAdditionService" unbind="unsetAdditionService"/>
<reference name="subtractionService" interface="com.example.SubtractionService" cardinality="1..1" policy="static" bind="setSubtractionService" unbind="unsetSubtractionService"/>
</scr:component>