You can modify the etc/config.properties file, in particular the org.osgi.framework.system.capabilities configuration. If some service are provided by default by the framework and are missing, you may want to raise a JIRA issue and provide a patch / pull request.
2017-02-05 12:05 GMT+01:00 Markus Rathgeb <maggu2...@gmail.com>: > Ah, okay, I assume it is caused by the missing > Provide-Capability of the Equinox bundle that it provides that service. > Could this information be added by some configuration file without > modify the Equinox bundle itself? > > 2017-02-05 11:49 GMT+01:00 Markus Rathgeb <maggu2...@gmail.com>: > > Hello, > > > > I thought I understand how the dependency flag is working for features > > and bundles, but at least it seems to be different. > > Perhaps someone could explain me the following scenario: > > > > Feature file: > > === > > <?xml version="1.0" encoding="UTF-8"?> > > <features name="saxparserfactory" > > xmlns="http://karaf.apache.org/xmlns/features/v1.4.0"> > > > > <feature name="saxparserfactory" version="1.0-SNAPSHOT"> > > <requirement>osgi.service;filter:="(objectClass=javax. > xml.parsers.SAXParserFactory)";effective:=active</requirement> > > <feature dependency="true">jboss-xerces</feature> > > </feature> > > > > <feature name="jboss-xerces" description="JBoss Xerces" > > version="1.0-SNAPSHOT"> > > <details>OSGi service for 'javax.xml.parsers. > SAXParserFactory'</details> > > > > <!-- Maven repository: > > https://repository.jboss.org/nexus/content/repositories/releases/ --> > > <!-- <bundle > > start-level="30">mvn:org.jboss.osgi.xerces/jbosgi- > xerces/3.1.0.Final</bundle> > > --> > > <bundle start-level="30">https://repository.jboss.org/nexus/ > content/repositories/releases/org/jboss/osgi/xerces/jbosgi- > xerces/3.1.0.Final/jbosgi-xerces-3.1.0.Final.jar</bundle> > > <capability>osgi.service;objectClass=javax.xml.parsers. > SAXParserFactory</capability> > > > > <bundle dependency="true" > > start-level="30">mvn:org.osgi/org.osgi.util.xml/1.0.1</bundle> > > <bundle dependency="true" > > start-level="8">mvn:org.ops4j.pax.logging/pax-logging-api/1.9.1</bundle> > > </feature> > > > > </features> > > === > > > > I would expect if I install the feature "saxparserfactory" the feature > > jboss-xerces is installed only if the requirements are not already > > fulfilled. > > The only requirement the feature drops in should be to ensure that > > there is a SAXParserFactory service available. > > Should this be possible? > > > > > > Test > > === > > > > I used the current Karaf 4.1.0 form the second voting round. > > > > Start a clean instance: > > $ bin/karaf clean > > > > As expected Apache Felix is the used OSGi framework > > > > karaf@root()> bundle:list -t 0 -s 0 | grep Active > > 0 │ Active │ 0 │ 5.6.1 │ org.apache.felix.framework > > > > I added the feature repository file. > > > > karaf@root()> feature:repo-add > > file:///home/maggu2810/tmp/saxparserfactory-feature.xml > > Adding feature url file:///home/maggu2810/tmp/ > saxparserfactory-feature.xml > > > > After that let's look if there is already a SAXParserFactory present: > > > > karaf@root()> service:list javax.xml.parsers.SAXParserFactory > > > > No output, so as expected, no service found. > > > > Check what will be done if the feature is installed: > > > > karaf@root()> feature:install -t -v saxparserfactory > > Adding features: saxparserfactory/[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT] > > Changes to perform: > > Region: root > > Bundles to install: > > https://repository.jboss.org/nexus/content/repositories/ > releases/org/jboss/osgi/xerces/jbosgi-xerces/3.1.0. > Final/jbosgi-xerces-3.1.0.Final.jar > > mvn:org.osgi/org.osgi.util.xml/1.0.1 > > > > This is as I expect what should be done. > > > > Let's exit the Karaf container. > > > > karaf@root()> shutdown -f > > > > > > > > After that I used the Equinox framework > > > > $ echo 'karaf.framework=equinox' >> etc/custom.properties > > > > and started again a clean isntance. > > > > $ bin/karaf clean > > > > Ensure the feature repository is available: > > > > karaf@root()> feature:repo-add > > file:///home/maggu2810/tmp/saxparserfactory-feature.xml > > Adding feature url file:///home/maggu2810/tmp/ > saxparserfactory-feature.xml > > > > The Equinox OSGi framework bundle already provides a SAXParserFactory > service. > > > > karaf@root()> service:list javax.xml.parsers.SAXParserFactory > > [javax.xml.parsers.SAXParserFactory] > > ------------------------------------ > > service.pid = 0.org.eclipse.osgi.internal.framework. > XMLParsingServiceFactory > > service.vendor = Eclipse.org - Equinox > > service.id = 20 > > service.bundleid = 0 > > service.scope = bundle > > Provided by : > > OSGi System Bundle (0) > > > > Now I would expect that the installation of the saxparserfactory > > feature will not trigger an installation of the jboss-xerces feature, > > because all requirements should be already satisfied. > > But it looks like: > > > > karaf@root()> feature:install -t -v saxparserfactory > > Adding features: saxparserfactory/[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT] > > Changes to perform: > > Region: root > > Bundles to install: > > https://repository.jboss.org/nexus/content/repositories/ > releases/org/jboss/osgi/xerces/jbosgi-xerces/3.1.0. > Final/jbosgi-xerces-3.1.0.Final.jar > > mvn:org.osgi/org.osgi.util.xml/1.0.1 > > > > What am I doing wrong? > > > > Best regards, > > Markus Rathgeb > -- ------------------------ Guillaume Nodet