Hi Kerry, Yes it executes in another thread (jetty http executor thread pool), so the context is different.
The code actually fails quite deep in the abyss of the java service loader: Caused by: java.util.ServiceConfigurationError: javax.xml.parsers.DocumentBuilderFactory: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found at java.util.ServiceLoader.fail(ServiceLoader.java:239) ~[?:?] I should switch the current thread classloader to use the classloader of the class java.util.ServiceLoader? Thanks!! Nicolas On Tue, Mar 27, 2018 at 3:38 PM, Kerry <karaf-u...@avionicengineers.com> wrote: > Hazarding a guess at this but when it fails when called by the camel route > it will be executing on a different thread when then when executed by karaf > command. You could try and confirm this by surrounding the code that is > failing with a thread context switch so that it switches to the context of > the class that has the failing code. > > Kerry > > Sent from BlueMail <http://www.bluemail.me/r?b=12512> > On 27 Mar 2018, at 14:17, Nicolas Brasey <nicolas.bra...@gmail.com> wrote: >> >> Hi, >> >> I'm feeling frustrated because like everytime I'm adventuring with XML in >> an OSGi context, I end up with classloading issues, and this time is no >> exception :-) So I would like to know what/how you guys are doing it... >> >> My use case is extremely simple, yet I can't figure out what I'm doing >> wrong. I need to use an XML parser to get a Document object from an XML >> file. This XML parsing code is embedded inside a service (DS). The weird >> thing is that If I invoke this service with a karaf command, then it works >> fine. If the same code is invoked through a REST endpoint (another bundle), >> then I get the following class not found: >> >> Caused by: java.util.ServiceConfigurationError: >> javax.xml.parsers.DocumentBuilderFactory: >> Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found >> at java.util.ServiceLoader.fail(ServiceLoader.java:239) ~[?:?] >> at java.util.ServiceLoader.access$300(ServiceLoader.java:185) ~[?:?] >> at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372) >> ~[?:?] >> >> >> AFAIK, Karaf is pulling the servicemix implementation of Xerces, and I >> doubled check that the package is available in karaf: >> >> >> dms@root>exports | grep org.apache.xerces.jaxp >> org.apache.xerces.jaxp.datatype >> │ 2.11.0 │ 348 │ >> org.apache.servicemix.bundles.xerces >> org.apache.xerces.jaxp.validation >> │ 2.11.0 │ 348 │ >> org.apache.servicemix.bundles.xerces >> org.apache.xerces.jaxp >> │ 2.11.0 │ 348 │ >> org.apache.servicemix.bundles.xerces >> >> >> >> So, I don't know what I'm doing wrong here. >> >> Any clue ? >> >> >> Thanks, >> Nicolas >> >>