Uploaded image for project: 'Commons Lang'
  1. Commons Lang
  2. LANG-204

[lang] org.apache.commons.lang.Entities multithreaded init.

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 2.1
    • 2.5
    • lang.*
    • None
    • Operating System: other
      Platform: Other

    • 39411

    Description

      ----Original Message----
      From: Gaulin, David: #CIPO - OPIC Gaulin.David@ic.gc.ca
      Sent: Wednesday, April 26, 2006 5:09 AM
      To: commons-dev@jakarta.apache.org
      Subject: [lang] org.apache.commons.lang.Entities

      Hello,

      Not sure if it is the right mailling list but here we go anyway.

      I am currently using the Entities.java class (well I am using the
      StringEscapeUtils.java which uses that class). Works really good, saved me a
      lot of time. My thanks to the people who wrote it.

      I have encountered a little problems with it taught. Nothing major but I just
      taugth I would share since it migth be of interest to you.

      I have an heavily multithreaded process that runs on a really under powered
      server. All those threads access the StringEscapeUtils.escapeXml() methods
      pretty much at the same time. What happens is that by the time the Second or
      Third Thread calls the StringEscapeUtils.escapeXml() the static initialization
      in the Entities.java class has not completed yet. That block in particular.

      static

      { XML = new Entities(); XML.addEntities(BASIC_ARRAY); XML.addEntities(APOS_ARRAY); }

      I don't get a NullPointer so it seems that XML = new Entities() is actually
      being executed before the other Thread starts but the
      XML.addEntities(BASIC_ARRAY) on the other hand is not executed before the other
      thread starts. So when the second or third thread calls the
      StringEscapeUtils.escapeXml() it doesn't escape the BASIC_ARRAY or APOS_ARRAY
      entities. To fix it, in my code, I just make sure to call
      StringEscapeUtils.escapeXml() before I start any threads and it solve the
      problems but if anyone is ever to re-work the class this might be something to
      look at.

      Just to share.

      Thank

      David

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              ggregory Gary D. Gregory
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: