[
https://issues.apache.org/jira/browse/CXF-2893?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp resolved CXF-2893.
------------------------------
Assignee: Daniel Kulp
Fix Version/s: 2.2.10
Resolution: Fixed
> CXF should use class' classloader for initialization of its loggers
> -------------------------------------------------------------------
>
> Key: CXF-2893
> URL: https://issues.apache.org/jira/browse/CXF-2893
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.2.9
> Reporter: Hynek Mlnarik
> Assignee: Daniel Kulp
> Priority: Trivial
> Fix For: 2.2.10
>
> Attachments: patch.diff
>
>
> The class org.apache.cxf.common.logging.LogUtils should attempt to use plain
> Class.forName(cname) if Class.forName(cname, true,
> Thread.currentThread().getContextClassLoader()) fails.
> Rationale: Current thread might not be able to access cxf classes. Take as an
> example the following OSGi bundles:
> 1) bundle with a http server.
> 2) bundle with CXF-based servlet SomeCXFServlet. The bundle contains CXF as
> private OSGi library.
> A servlet SomeCXFServlet from bundle (2) has access to CXF via
> SomeCXFServlet.class.getClassloader(), similarly LogUtils class via its
> classloader. However, the servlet initialization is performed from http
> server thread that does not have access to bundle (2) private classes.
> Initialization of a logger is hence also made from the http thread. CXF tries
> to load its org.apache.cxf.common.logging.*Logger classes - the attempt
> however fails because the current thread's classloader is used instead of the
> LogUtils'.
> Solution: Try to load the class using Class.forName(cname) if
> Class.forName(cname, true, Thread.currentThread().getContextClassLoader())
> fails.
> Will attach diff in a separate comment
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.