[
https://issues.apache.org/jira/browse/LOGGING-37?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Thomas Neidhart resolved LOGGING-37.
------------------------------------
Resolution: Fixed
Fix Version/s: 1.2
Fixed in r1606041.
> [logging] LogFactory#getLogFactory should not look for method every time
> ------------------------------------------------------------------------
>
> Key: LOGGING-37
> URL: https://issues.apache.org/jira/browse/LOGGING-37
> Project: Commons Logging
> Issue Type: Bug
> Affects Versions: 1.0.4
> Environment: Operating System: other
> Platform: Other
> Reporter: Matthias Ernst
> Fix For: 1.2
>
>
> LogFactory checks for the existence of Thread#getContextClassLoader every time
> #getLogFactory is invoked and does a reflective invocation. This is
> unnecessarily expensive if many Log objects are created. An easy patch is to
> remember the Method object; the lookup happens only once and it will massively
> profit from reflection optimizations after a number of calls (a Java code stub
> is generated by the reflection package).
> Patch:
> 419a420,426
> > private static Method GET_CONTEXT_CLASS_LOADER = null;
> > static {
> > try {
> > GET_CONTEXT_CLASS_LOADER =
> > Thread.class.getMethod("getContextClassLoad
> er", null);
> > } catch (NoSuchMethodException e) {
> > }
> > }
> 436,439c443
> < try {
> < // Are we running on a JDK 1.2 or later system?
> < Method method = Thread.class.getMethod("getContextClassLoader",
> nu
> ll);
> <
> ---
> > if(GET_CONTEXT_CLASS_LOADER != null) {
> 442c446
> < classLoader =
> (ClassLoader)method.invoke(Thread.currentThread(
> ), null);
> ---
> > classLoader =
> > (ClassLoader)GET_CONTEXT_CLASS_LOADER.invoke(Thr
> ead.currentThread(), null);
> 472c476
> < } catch (NoSuchMethodException e) {
> ---
> > } else {
--
This message was sent by Atlassian JIRA
(v6.2#6252)