I found out that some bundles in the feature have imports to javax.xml.bind
without a version definition.
I patched the manifests and set the requested version range to [2.2.0,2.3).

e.g.:
javax.xml.bind;resolution:=required,version="[2.2.0,2.3)",
javax.xml.bind.annotation;resolution:=required,version="[2.2.0,2.3)",

With this change I can deploy the feature.

When I change the version range of the import javax.xml.bind of a single
bundle to [2.3.0,3) then the resolver ends up in the endless loop.

Regards

  Richard








Am Mo., 7. Feb. 2022 um 15:39 Uhr schrieb Richard Hierlmeier <
rhierlme...@googlemail.com>:

>
> Last week I ported another feature from Karaf 3 to 4
> When I install this feature in Karaf 4.3.6 then the feature:install
> command runs into a OutOfMemoryException.
> The Exception occurs in ResolverImpl of Apache Felix.
>
> I enabled the debug logging of the logger org.apache.felix.resolver. I
> found out that many time such log messages are written:
>
> 2022-02-07 14:08:14,781 | DEBUG | features-3-thread-1 |
> org.apache.felix.resolver.ResolverImpl | 18  -
> org.apache.karaf.features.core - 4.3.6      | Candidate permutation failed
> due to a conflict between imports; will try another if possible. (Uses
> constraint violation. Unable to resolve resource
> org.apache.servicemix.bundles.jaxb-xjc
> [org.apache.servicemix.bundles.jaxb-xjc/2.3.2.1] because it is exposed to
> package 'javax.xml.bind' from resources
> org.apache.servicemix.specs.jaxb-api-2.2
> [org.apache.servicemix.specs.jaxb-api-2.2/2.9.0] and
> org.apache.servicemix.specs.jaxb-api-2.3
> [org.apache.servicemix.specs.jaxb-api-2.3/2.3.0.2] via two dependency
> chains.
>
> Chain 1:
>   org.apache.servicemix.bundles.jaxb-xjc
> [org.apache.servicemix.bundles.jaxb-xjc/2.3.2.1]
>     import:
> (&(osgi.wiring.package=javax.xml.bind)(version>=2.0.0)(!(version>=3.0.0)))
>      |
>     export: osgi.wiring.package: javax.xml.bind
>   org.apache.servicemix.specs.jaxb-api-2.2
> [org.apache.servicemix.specs.jaxb-api-2.2/2.9.0]
>
> Chain 2:
>   org.apache.servicemix.bundles.jaxb-xjc
> [org.apache.servicemix.bundles.jaxb-xjc/2.3.2.1]
>     import: (osgi.wiring.package=com.sun.xml.bind.unmarshaller)
>      |
>     export: osgi.wiring.package=com.sun.xml.bind.unmarshaller;
> uses:=javax.xml.bind
>   org.apache.servicemix.bundles.jaxb-runtime
> [org.apache.servicemix.bundles.jaxb-runtime/2.3.2.1]
>     import:
> (&(osgi.wiring.package=javax.xml.bind)(version>=2.0.0)(!(version>=3.0.0)))
>      |
>     export: osgi.wiring.package: javax.xml.bind
>   org.apache.servicemix.specs.jaxb-api-2.3
> [org.apache.servicemix.specs.jaxb-api-2.3/2.3.0.2]) |
>
>
> % grep -c "Candidate permutation failed"  data/log/karaf.log
> 7890
>
> % grep -c "Candidate permutation failed.*jaxb-api" data/log/karaf.log
> 6855
>
> jaxb-api-2.3 comes from apache-cxf-3.4.5-features.xml
>
> system/org/apache/cxf/karaf/apache-cxf/3.4.5/apache-cxf-3.4.5-features.xml
> 28:        <bundle start-level="10"
> dependency="true">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.3/2.3_2</bundle>
>
> jaxb-api-2.2 comes from framework-4.3.6-features.xml
>
>
> system/org/apache/karaf/features/framework/4.3.6/framework-4.3.6-features.xml
> 47:        <bundle dependency="true"
> start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.2/2.9.0</bundle>
>
>
> I need CXF for my feature.
>
> Has some an idea how to solve this problem?
>
> Regards
>
>   Richard
>
>

Reply via email to