You have the info actually ;) Your history-domain bundle has a requirement on javax.sql.DataSource filetransfoerhistoryjta. It's what 's contained in your bundle header.
Feature resolver check the requirement, and doesn't find the matching capability. You have three options: 1. remove the requirement in your bundle 2. add a feature providing the capability (like this https://github.com/apache/karaf/blob/main/examples/karaf-jpa-example/karaf-jpa-example-features/src/main/feature/feature.xml#L28 ) 3. you can disable requirements check in the resolver (not recommended). Regards JB On Wed, Mar 9, 2022 at 4:37 PM Bengt Rodehav <be...@rodehav.com> wrote: > Unfortunately I didn't get any extra information. I got the same as before > which is: > > 2022-03-09T16:26:02,494 | INFO | pipe-feature:install -v > connect-filetransfer-history-db | FeaturesServiceImpl | 18 - > org.apache.karaf.features.core - 4.3.6 | Adding features: > connect-filetransfer-history-db/[3.1.0.SNAPSHOT,3.1.0.SNAPSHOT] > 2022-03-09T16:26:02,901 | ERROR | Karaf local console user karaf | > ShellUtil | 70 - org.apache.karaf.shell.core - 4.3.6 > | Exception caught while executing command > org.apache.felix.resolver.reason.ReasonException: Unable to resolve root: > missing requirement [root] osgi.identity; > osgi.identity=connect-filetransfer-history-db; type=karaf.feature; > version="[3.1.0.SNAPSHOT,3.1.0.SNAPSHOT]"; > filter:="(&(osgi.identity=connect-filetransfer-history-db)(type=karaf.feature)(version>=3.1.0.SNAPSHOT)(version<=3.1.0.SNAPSHOT))" > [caused by: Unable to resolve > connect-filetransfer-history-db/3.1.0.SNAPSHOT: missing requirement > [connect-filetransfer-history-db/3.1.0.SNAPSHOT] osgi.identity; > osgi.identity=se.digia.connect.services.filetransfer.history-domain; > type=osgi.bundle; version="[3.1.0.SNAPSHOT,3.1.0.SNAPSHOT]"; > resolution:=mandatory [caused by: Unable to resolve > se.digia.connect.services.filetransfer.history-domain/3.1.0.SNAPSHOT: > missing requirement > [se.digia.connect.services.filetransfer.history-domain/3.1.0.SNAPSHOT] > osgi.service; objectClass=javax.sql.DataSource; effective:=active; > filter:="(osgi.jndi.service.name=jdbc/filetransferhistoryjta)"]] > at > org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) > ~[?:?] > at org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:433) > ~[?:?] > at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:420) > ~[?:?] > at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:374) > ~[?:?] > at > org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:257) > ~[?:?] > at > org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:399) > ~[?:?] > at > org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1069) > ~[?:?] > at > org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:1004) > ~[?:?] > at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) > ~[?:?] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) > ~[?:?] > at java.lang.Thread.run(Thread.java:833) [?:?] > Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to > resolve connect-filetransfer-history-db/3.1.0.SNAPSHOT: missing requirement > [connect-filetransfer-history-db/3.1.0.SNAPSHOT] osgi.identity; > osgi.identity=se.digia.connect.services.filetransfer.history-domain; > type=osgi.bundle; version="[3.1.0.SNAPSHOT,3.1.0.SNAPSHOT]"; > resolution:=mandatory [caused by: Unable to resolve > se.digia.connect.services.filetransfer.history-domain/3.1.0.SNAPSHOT: > missing requirement > [se.digia.connect.services.filetransfer.history-domain/3.1.0.SNAPSHOT] > osgi.service; objectClass=javax.sql.DataSource; effective:=active; > filter:="(osgi.jndi.service.name=jdbc/filetransferhistoryjta)"] > at > org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) > ~[?:?] > ... 12 more > Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to > resolve > se.digia.connect.services.filetransfer.history-domain/3.1.0.SNAPSHOT: > missing requirement > [se.digia.connect.services.filetransfer.history-domain/3.1.0.SNAPSHOT] > osgi.service; objectClass=javax.sql.DataSource; effective:=active; > filter:="(osgi.jndi.service.name=jdbc/filetransferhistoryjta)" > at > org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) > ~[?:?] > at > org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) > ~[?:?] > ... 12 more > > I tried the "--store" option which gave me a quite large file that I > unfortunately did not understand fully. Not sure if it helps any. > > /Bengt > > Den ons 9 mars 2022 kl 16:22 skrev Bengt Rodehav <be...@rodehav.com>: > >> OK - thanks. Will try that. >> >> /Bengt >> >> Den ons 9 mars 2022 kl 16:16 skrev Jean-Baptiste Onofré <j...@nanthrax.net >> >: >> >>> Hi >>> >>> The main difference is that feature used the resolver to optimize the >>> installation. Bundle installation doesn’t use the feature resolver. >>> >>> You can use feature:install -v to get resolver output and you will >>> probably see the chain found by the resolver. >>> >>> Regards >>> JB >>> >>> Le mer. 9 mars 2022 à 15:22, Bengt Rodehav <be...@rodehav.com> a écrit : >>> >>>> I have a very strange problem (in Karaf 4.3.6). I use JPA and have a >>>> bundle containing a persistence.xml in which a datasource is referenced: >>>> >>>> <jta-data-source>osgi:service/javax.sql.DataSource/( >>>> osgi.jndi.service.name=jdbc/filetransferhistoryjta)</jta-data-source> >>>> >>>> If the datasource is not available when I install this bundle then I >>>> will get an error complaining that the datasource is not present. The >>>> strange thing is that it seems to be dependent on how I install this bundle >>>> - directly installing the bundle or doing it via a feature. In the first >>>> case it works but in the latter it doesn't. >>>> >>>> If I first install all the prerequisites I need and then issue the >>>> following command in the Karaf shell: >>>> >>>> bundle:install -s >>>> mvn:se.digia.connect.services.filetransfer/history-domain/3.1-SNAPSHOT >>>> >>>> Then it works fine. It even works if I remove the "-s" and start the >>>> bundle afterwards instead. >>>> >>>> However, if I use the following feature: >>>> >>>> <feature name="connect-filetransfer-history-db" >>>> version="3.1-SNAPSHOT"> >>>> >>>> <bundle>mvn:se.digia.connect.services.filetransfer/history-domain/3.1-SNAPSHOT</bundle> >>>> </feature> >>>> >>>> And then issue the following command: >>>> >>>> feature:install connect-filetransfer-history-db >>>> >>>> Then the datasource cannot be found and the install fails. This happens >>>> consistently. I am using Pax-Jdbc for exposing the datasource via JNDI. >>>> >>>> First I thought that there might be a timing problem and that you have >>>> to wait a while to get the datasource published but it doesn't seem to have >>>> anything to do with that at all. I can wait 5 minutes after installing the >>>> datasource. I also check with the command "jndi:names" that it is >>>> published. But it still doesn't work using a feature. >>>> >>>> Can anyone tell me what is being done differently when I use a feature >>>> compared to when I just install the bundle directly? There is apparently >>>> some kind of difference. >>>> >>>> /Bengt >>>> >>>>