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]
