Is there any way to stop the feature installer from using the resolver?

/Bengt

Den ons 9 mars 2022 kl 16:37 skrev Bengt Rodehav <be...@rodehav.com>:

> 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
>>>>
>>>>

Reply via email to