Uploaded image for project: 'Commons Logging'
  1. Commons Logging
  2. LOGGING-37

[logging] LogFactory#getLogFactory should not look for method every time

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.0.4
    • 1.2
    • None
    • Operating System: other
      Platform: Other

    • 38626

    Description

      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 {

      Attachments

        Activity

          People

            Unassigned Unassigned
            matthias.ernst@coremedia.com Matthias Ernst
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: