karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: Problems due to the endorsed java.lang.Exception
Date Fri, 18 Mar 2016 17:52:19 GMT

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 <gnodet@apache.org> 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é <jb@nanthrax.net>:
> 
>> 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é
>> jbonofre@apache.org
>> http://blog.nanthrax.net
>> Talend - http://www.talend.com
>> 
> 
> 
> 
> -- 
> ------------------------
> Guillaume Nodet
> ------------------------
> Red Hat, Open Source Integration
> 
> Email: gnodet@redhat.com
> Web: http://fusesource.com
> Blog: http://gnodet.blogspot.com/

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


Mime
View raw message