Since Karaf is now Java7+ and jaxb-api is also endorsed, you could likely just add @javax.xml.bind.annotation.XmlTransient to the getter.
That said, the idea of adding public methods onto JDK level classes screams “bad idea” to me. Dan > On Mar 18, 2016, at 1:11 PM, Guillaume Nodet <[email protected]> wrote: > > The getClassContext() method is used in pax-logging to render the exception > in a nicer way. > I don't have any problem moving the qualifier to protected or whatever, but > we'd need to change the code in pax-logging > > > https://github.com/ops4j/org.ops4j.pax.logging/blob/master/pax-logging-log4j2/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java#L136-L144 > > > https://github.com/ops4j/org.ops4j.pax.logging/blob/master/pax-logging-service/src/main/java/org/apache/log4j/OsgiThrowableRenderer.java#L62-L67 > > It should not be a big deal, but the current code expect the method to be > public unfortunately. > > Guillaume > > > 2016-03-18 17:29 GMT+01:00 Jean-Baptiste Onofré <[email protected]>: > >> Hi Cristiano, >> >> I think you are right, it's probably something existing for a while. I'm >> just surprised that you encountered now. >> >> Let me check your detailed use case that you sent previously. >> >> Regards >> JB >> >> >> On 03/18/2016 05:14 PM, Cristiano Costantini wrote: >> >>> Hello all, >>> >>> it is some days I was having troubles using CXF services on ServiceMix >>> (and >>> it is some days I spam on the mailing list of ServiceMix, Camel and CXF >>> :-D >>> ) and I've finally come to the source of my issues which are due to the >>> "endorsed" java.lang.Exception which is used by Karaf: >>> >>> >>> https://github.com/apache/karaf/blob/master/exception/src/main/java/java/lang/Exception.java >>> >>> My problem is due to the fact that this class has a public property, >>> public Class[] getClassContext() { >>> return classContext; >>> } >>> which is seen by JaxB at runtime inside Karaf which cause it to marshall >>> the Exception in SOAP services with a wrong XML, an XML which include >>> <classContext> tags. >>> >>> The class in Karaf has not changed since committed by Guillaume Nodet in >>> 2010, so this issue with CXF has probably always been there. >>> >>> In my opinion, this getter should be private or protected as I guess it is >>> only used on the nested class method's getThrowableContext (it is a >>> replacement for the JRE's class, I don't think there are external project >>> using this modification of the Exception class). >>> >>> >>> To confirm my thesis, I've hacked the org.apache.karaf.exception-2.4.0.jar >>> inside the lib/endorsed folder with a class compiled by myself where I've >>> changed the method to >>> private Class[] getClassContext() { >>> return classContext; >>> } >>> and with this hack, Karaf has continued to work (and my CXF service now >>> works properly). >>> >>> Do you think there are potential side effects in this fix? >>> Do you need me to open an issue on Jira to handle the problem? >>> If it is confirmed that the fix of making this method private, do you >>> think >>> it could be included soon on the next Karaf Release? >>> >>> Thank you very much to all, >>> Cristiano >>> >>> >> -- >> Jean-Baptiste Onofré >> [email protected] >> http://blog.nanthrax.net >> Talend - http://www.talend.com >> > > > > -- > ------------------------ > Guillaume Nodet > ------------------------ > Red Hat, Open Source Integration > > Email: [email protected] > Web: http://fusesource.com > Blog: http://gnodet.blogspot.com/ -- Daniel Kulp [email protected] - http://dankulp.com/blog Talend Community Coder - http://coders.talend.com
