Hi Freeman, Thanks your suggestion.
> So that will use both javax.xml.stream.* and javax.xml.transform.* from the system bundle 0(JDK), this can remove the "Uses constraint violation" error, and that's what Karaf/Servicemix do. Right, only problem: needing to confirm whether cxf-api bundle wants to use system bundle or org.apache.servicemix.specs.stax-api-1.0 or not? If system bundle, I agree with you. Otherwise, I think that OSGi header of cxf-api bundle should be modified. Thanks --Tang Freeman Fang wrote: > Hi, > > Rather than modify OSGi header of cxf-api bundle, you may need revise felix > default.properties, likely add version="1.2" for javax.xml.stream.* package, > something like > jre-1.6=,\ > … > javax.xml.stream;version="1.2", \ > javax.xml.stream.events;version="1.2", \ > javax.xml.stream.util;version="1.2", \ > … > > So that will use both javax.xml.stream.* and javax.xml.transform.* from the > system bundle 0(JDK), this can remove the "Uses constraint violation" error, > and that's what Karaf/Servicemix do. > > −−−−−−−−−−−−− > Freeman(Yue) Fang > > Red Hat, Inc. > FuseSource is now part of Red Hat > Web: http://fusesource.com | http://www.redhat.com/ > Twitter: freemanfang > Blog: http://freemanfang.blogspot.com > http://blog.sina.com.cn/u/1473905042 > weibo: @Freeman小屋 > > On 2012-12-26, at 上午11:14, Tang Yong wrote: > >> Deeply, >> >> Firstly, "Import-Package" section of cxf-api-2.7.1.jar's MANIFEST.MF >> needs to be modified in order to use javax.xml.stream package from >> org.apache.servicemix.specs.stax-api-1.0-2.1.0.jar rather than system >> package, >> >> [Before modification] >> Import-Package: ...,javax.xml.stream;version="[0.0,2)",... >> >> [After modification] >> Import-Package: ...,javax.xml.stream;version="[1.0.1,2)",... >> >> Secondly, once finishing the above modification and re-launching felix >> 4.0.3, another similar error happened: >> >> ERROR: Bundle org.apache.cxf.cxf-api [53] Error starting >> file:/E:/gfv4/apachedcxf/distribution/multi-bundle/target/cxf-dosgi-ri-multibundle-distribution-1.4-SNAPSHOT-dir/apache-cxf-dosgi-ri-1.4-SNAPSHOT/dosgi_bundles/cxf-api-2.7.1.jar >> (org.osgi.framework.BundleException: Uses constraint violation. Unable >> to resolve bundle revision org.apache.cxf.cxf-api [53.0] because it is >> exposed to package 'javax.xml.stream' from bundle revisions >> org.apache.servicemix.specs.stax-api-1.0 [22.0] and >> org.apache.felix.framework [0] via two dependency chains. >> >> Chain 1: >> org.apache.cxf.cxf-api [53.0] >> import: >> (&(osgi.wiring.package=javax.xml.stream)(version>=1.0.1)(!(version>=2.0.0))) >> | >> export: osgi.wiring.package=javax.xml.stream >> org.apache.servicemix.specs.stax-api-1.0 [22.0] >> >> Chain 2: >> org.apache.cxf.cxf-api [53.0] >> import: (osgi.wiring.package=javax.xml.transform.stax) >> | >> export: osgi.wiring.package=javax.xml.transform.stax; >> uses:=javax.xml.stream >> export: osgi.wiring.package=javax.xml.stream >> org.apache.felix.framework [0]) >> >> For such a problem, I made a *temp* confirmation/fixing: modify >> felix.jar/default.properties >> >> (Because I used jre 1.6) >> [Before modification] >> jre-1.6=, \ >> ... >> javax.xml.transform.stax;uses:="javax.xml.stream,javax.xml.transform,javax.xml.stream.events";version="0.0.0.1_006_JavaSE", >> \ >> ... >> >> [After modification] >> jre-1.6=, \ >> ... >> javax.xml.transform.stax;version="0.0.0.1_006_JavaSE", \ >> ... >> >> Then, re-launching felix 4.0.3, anything is OK. >> >> A point to notice is that before felix 4.0.2, in the above >> section(jre-xxx), javax.xml.transform.stax does not use "uses" clause. >> >> In addition, I think that we should tell user to add some contents into >> conf/config.properties file of the Felix distribution(from 4.0.2) >> rather than modifying felix.jar/default.properties because this is an >> inner file. >> >> Please confirm what I said above, thanks. >> >> --Tang >> >> Tang Yong wrote: >>> Hi Sergey, Christian >>> >>> About dcxf multi-bundle distro(my local 1.4 SnapShot) launching, I met a >>> big problem as following, >>> >>> While launching multi-bundle distro(java -jar bin\felix.jar) using felix >>> 4.0.3, the following exception happened on shell, >>> >>> ERROR: Bundle org.apache.cxf.cxf-api [53] Error starting >>> file:/E:/gfv4/apachedcxf/distribution/multi-bundle/target/cxf-dosgi-ri-multibundle-distribution-1.4-SNAPSHOT-dir/apache-cxf-dosgi-ri-1.4-SNAPSHOT/dosgi_bundles/cxf-api-2.7.1.jar >>> (org.osgi.framework.BundleException: Uses constraint violation. Unable >>> to resolve bundle revision org.apache.cxf.cxf-api [53.0] because it is >>> exposed to package 'javax.xml.stream' from bundle revisions >>> org.apache.felix.framework [0] and >>> org.apache.servicemix.specs.stax-api-1.0 [22.0] via two dependency chains. >>> >>> Chain 1: >>> org.apache.cxf.cxf-api [53.0] >>> import: >>> (&(osgi.wiring.package=javax.xml.stream)(version>=0.0.0)(!(version>=2.0.0))) >>> | >>> export: osgi.wiring.package=javax.xml.stream >>> org.apache.felix.framework [0] >>> >>> Chain 2: >>> org.apache.cxf.cxf-api [53.0] >>> import: (osgi.wiring.package=com.sun.xml.bind.api) >>> | >>> export: osgi.wiring.package=com.sun.xml.bind.api; uses:=javax.xml.stream >>> org.apache.servicemix.bundles.jaxb-impl [34.0] >>> import: >>> (&(osgi.wiring.package=javax.xml.stream)(version>=1.0.0)(!(version>=2.0.0))) >>> | >>> export: osgi.wiring.package=javax.xml.stream >>> org.apache.servicemix.specs.stax-api-1.0 [22.0]) >>> >>> 【My Analyse】 >>> I made two confirmations : >>> >>> 1 there are two bundles which all exported javax.xml.stream, >>> 1) felix.jar >>> using org.osgi.framework.system.packages to export javax.xml.stream and >>> not specifying concrete package version, so defaultly starting from 0.0 >>> >>> 2) org.apache.servicemix.specs.stax-api-1.0-2.1.0.jar >>> explictly exporting javax.xml.stream and specifying package version >>> (version="1.0.1") >>> >>> 2 cxf-api-2.7.1.jar imports javax.xml.stream;version="[0.0,2)", and 1) >>> and 2) all meet the requirement, so conflict happened. >>> >>> In addition, cxf-api-2.7.1.jar is added into multi-bundle distro from >>> 1.4, in 1.3 multi-bundle distro, the jar does not exist. >>> >>> So, please confirm whether having the same problem or not? If yes, I >>> think that the issue should be fixed as soon as possiblie before >>> releasing 1.4. >>> >>> Thanks >>> --Tang >>> >> > >
