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 On 27 Mar 2018, 14:17, 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