Platform: Java 1.8, karaf 4.1.3 I have the following DS component that exposes a Servlet to the Pax Web Whiteboard Extender: https://github.com/steinarb/sonar-collector/blob/master/sonar-collector-webhook/src/main/java/no/priv/bang/sonar/collector/webhook/SonarCollectorServlet.java#L55
The component starts fine, and exposes a Servlet service that is picked up by the whiteboard extender, and as far as I can tell, it does what it is expected to do (receive POSTs from SonarQube/SonarCloud and store build statistics in a PostgreSQL database). However, if I add an empty activate method, like so: @Component(service={Servlet.class}, property={"alias=/sonar-collector"} ) public class SonarCollectorServlet extends HttpServlet { ... @Activate public void activate(Map<String, Object> config) { } ... } then the component fails to load, because of missing dependencies: karaf@root()> feature:repo-add mvn:no.priv.bang.sonar.sonar-collector/sonar-collector-webhook/LATEST/xml/features Adding feature url mvn:no.priv.bang.sonar.sonar-collector/sonar-collector-webhook/LATEST/xml/features karaf@root()> feature:install sonar-collector-webhook Error executing command: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=sonar-collector-webhook; type=karaf.feature; version="[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]"; filter:="(&(osgi.identity=sonar-collector-webhook)(type=karaf.feature)(version>=1.0.0.SNAPSHOT)(version<=1.0.0.SNAPSHOT))" [caused by: Unable to resolve sonar-collector-webhook/1.0.0.SNAPSHOT: missing requirement [sonar-collector-webhook/1.0.0.SNAPSHOT] osgi.identity; osgi.identity=no.priv.bang.sonar.sonar-collector-webhook; type=osgi.bundle; version="[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]"; resolution:=mandatory [caused by: Unable to resolve no.priv.bang.sonar.sonar-collector-webhook/1.0.0.SNAPSHOT: missing requirement [no.priv.bang.sonar.sonar-collector-webhook/1.0.0.SNAPSHOT] osgi.service; effective:=ac tive; filter:="(objectClass=org.osgi.service.jdbc.DataSourceFactory)"]] karaf@root()> If remove the "@Activate" annotation, the component loads again. Does anyone know what might cause this? What's strange about this, that the missing depenency the error message complains about, ie. org.osgi.service.jdbc.DataSourceFactory, is essential to the servlet's operation. Without a DataSourceFactory, no database can be contacted and no data can be saved (and data _is_ saved). Is the error message because the bundle can't find the type org.osgi.service.jdbc.DataSourceFactory? Or is the message about not getting an instance of org.osgi.service.jdbc.DataSourceFactory? The full error message from karaf.log below. Thanks! - Steinar Error message from karaf.log follows: 2017-12-04T20:28:57,555 | ERROR | Karaf local console user karaf | ShellUtil | 42 - org.apache.karaf.shell.core - 4.1.3 | Exception caught while executing command org.osgi.service.resolver.ResolutionException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=sonar-collector-webhook; type=karaf.feature; version="[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]"; filter:="(&(osgi.identity=sonar-collector-webhook)(type=karaf.feature)(version>=1.0.0.SNAPSHOT)(version<=1.0.0.SNAPSHOT))" [caused by: Unable to resolve sonar-collector-webhook/1.0.0.SNAPSHOT: missing requirement [sonar-collector-webhook/1.0.0.SNAPSHOT] osgi.identity; osgi.identity=no.priv.bang.sonar.sonar-collector-webhook; type=osgi.bundle; version="[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]"; resolution:=mandatory [caused by: Unable to resolve no.priv.bang.sonar.sonar-collector-webhook/1.0.0.SNAPSHOT: missing requirement [no.priv.bang.sonar.sonar-collector-webhook/1.0.0.SNAPSHOT] osgi.s ervice; effective:=active; filter:="(objectClass=org.osgi.service.jdbc.DataSourceFactory)"]] at org.apache.felix.resolver.ResolutionError.toException(ResolutionError.java:42) ~[?:?] at org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:391) ~[?:?] at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:377) ~[?:?] at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:349) ~[?:?] at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:218) ~[?:?] at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:291) ~[?:?] at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1248) ~[?:?] at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$1(FeaturesServiceImpl.java:1147) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?] at java.lang.Thread.run(Thread.java:748) [?:?]