+1 Another milestone or rc1 release would be great to get some more people to look into this.
Christian 2018-03-28 8:08 GMT+02:00 Siano, Stephan <stephan.si...@sap.com>: > Hi, > > That looks really cool! > > Wouldn't it a good idea to have another 4.2.0 milestone release with this > (and pax-web 7.0.0 support which was also merged yesterday)? Or will we see > a 4.2.0 GA release soon? > > Best regards > Stephan > > -----Original Message----- > From: Guillaume Nodet [mailto:gno...@apache.org] > Sent: Dienstag, 27. März 2018 16:48 > To: dev <dev@karaf.apache.org> > Subject: Re: Karaf 4.2.0 and endorsed libs > > I've created a PR with a solution that works on both java 8 and java 9. > Basically, we do something similar than with the servicemix specs, but in a > more focused way, i.e. we only add the classes that need to be overriden. > See https://github.com/apache/karaf/pull/481 > > 2018-03-23 14:30 GMT+01:00 Guillaume Nodet <gno...@apache.org>: > > > So I think we don't have to transform the servicemix specs into java > > modules, but we can actually use the --patch-module option to hack the > > content of the JVM modules and use the servicemix classes instead. > > However, it does not work well for all specs, we need to abide to the JVM > > modules boundaries. > > For example the jaxp spec is split into java.xml and jdk.java.xml and > > trying to use the jaxp servicemix spec does not work because it crosses > > both modules. > > I'll continue investigating, but that seems like a solution which could > > work on both java 8 and java 9. > > > > Guillaume > > > > > > 2018-03-22 21:14 GMT+01:00 Guillaume Nodet <gno...@apache.org>: > > > >> Unfortunately, using spi-fly won't work, or not very well. > >> The reason is that spi-fly do some weaving to fix the > >> ServiceLoader.load() calls. > >> In the case of woodstox, the call is done from > >> XMLInputFactory#newInstance, which resides in the stax api package. > >> So we'd have to deploy the servicemix specs as a bundle in order to > weave > >> it, but that would preclude the use of the default providers. > >> So I think the best option is what I had envisioned months ago (but > kinda > >> differed working on it), i.e. enhance the servicemix specs so that they > >> become java modules. > >> That's the new way to replace the endorsed lib mechanism, and I think > >> we'll have to use it. > >> I'm going to investigate this issue a bit this week or the next... > >> > >> Guillaume > >> > >> > >> > >> 2018-03-22 18:32 GMT+01:00 Guillaume Nodet <gno...@apache.org>: > >> > >>> I see several options: > >>> - using aries spi-fly > >>> - deploy the smx specs as java modules > >>> - deploy the provider as a java module > >>> - instantiate the provider explicitely from the consumer > >>> > >>> I'm going to investigate, but the easier might be to use spi-fly. It > >>> would require 2 fragments (or modifications), but this is not a generic > >>> solution: each provider / consumer has to be extended in some way to > opt-in. > >>> > >>> Also, things like javamail might get a bit tricky... > >>> > >>> > >>> 2018-03-01 8:04 GMT+01:00 Siano, Stephan <stephan.si...@sap.com>: > >>> > >>>> Hi, > >>>> > >>>> Till Karaf 4.1.x the endorsed libs delivered with karaf contain some > >>>> servicemix wrapped bundles for standard javax APIs. An example for > this is > >>>> the Stax API (javax.xml.stream). These wrapped API bundles replace the > >>>> implementation lookup mechanism provided by the JDK with one also > working > >>>> in an OSGi environment. > >>>> > >>>> With Karaf 4.2.0 these endorsed libraries were removed (because Java 9 > >>>> does not support endorsed libraries anymore). What is the idea how it > might > >>>> still be possible to run Karaf 4.2.x with the woodstox Stax > implementation? > >>>> > >>>> If you just install the woodstox-bundles as with karaf 4.1.x, you will > >>>> get the following exception: > >>>> java.util.ServiceConfigurationError: javax.xml.stream. > XMLInputFactory: > >>>> Provider com.ctc.wstx.stax.WstxInputFactory not found > >>>> at java.util.ServiceLoader.fail( > ServiceLoader.java:239) > >>>> at java.util.ServiceLoader.access > >>>> $300(ServiceLoader.java:185) > >>>> at java.util.ServiceLoader$LazyIt > >>>> erator.nextService(ServiceLoader.java:372) > >>>> at java.util.ServiceLoader$LazyIt > >>>> erator.next(ServiceLoader.java:404) > >>>> at java.util.ServiceLoader$1.next > >>>> (ServiceLoader.java:480) > >>>> at javax.xml.stream.FactoryFinder > >>>> $1.run(FactoryFinder.java:353) > >>>> at java.security.AccessController.doPrivileged(Native > >>>> Method) > >>>> at javax.xml.stream.FactoryFinder > >>>> .findServiceProvider(FactoryFinder.java:341) > >>>> at javax.xml.stream.FactoryFinder > >>>> .find(FactoryFinder.java:313) > >>>> at javax.xml.stream.FactoryFinder > >>>> .find(FactoryFinder.java:227) > >>>> at javax.xml.stream.XMLInputFacto > >>>> ry.newFactory(XMLInputFactory.java:205) > >>>> > >>>> Is there any idea how this might work? I am aware that as long as I am > >>>> using Java 8 I might just re-introduce the stax-api bundle to > lib/endorsed, > >>>> but what are the ideas for this on Java 9? > >>>> > >>>> Best regards > >>>> Stephan > >>>> > >>> > >>> > >>> > >>> -- > >>> ------------------------ > >>> Guillaume Nodet > >>> > >>> > >> > >> > >> -- > >> ------------------------ > >> Guillaume Nodet > >> > >> > > > > > > -- > > ------------------------ > > Guillaume Nodet > > > > > > > -- > ------------------------ > Guillaume Nodet > -- -- Christian Schneider http://www.liquid-reality.de Computer Scientist http://www.adobe.com