Tracking with this bugzilla ticket: http://issues.apache.org/bugzilla/show_bug.cgi?id=39411
Gary > -----Original Message----- > From: Gary Gregory [mailto:[EMAIL PROTECTED] > Sent: Wednesday, April 26, 2006 8:32 AM > To: Jakarta Commons Developers List > Subject: RE: [lang] org.apache.commons.lang.Entities > > Hello: > > To top it all off the behavior is probably different b/w Java 1.4 and > 1.5. > > We could: > > - Let users call StringEscapeUtils once to init the data like David > discovered. > - Change the init in Entities to lazy-init methods (which must be > synchronized) > - Change the init in Entities to use an on-demand holder class > > See "Effective Java" by J. Bloch, Item 48, for multi-threaded init > issues. > > Gary > > > -----Original Message----- > > From: Gaulin, David: #CIPO - OPIC [mailto:[EMAIL PROTECTED] > > Sent: Wednesday, April 26, 2006 5:09 AM > > To: [email protected] > > 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 > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
