commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Gregory" <ggreg...@seagullsoftware.com>
Subject RE: [lang] org.apache.commons.lang.Entities
Date Wed, 26 Apr 2006 15:35:13 GMT
Tracking with this bugzilla ticket:

http://issues.apache.org/bugzilla/show_bug.cgi?id=39411

Gary

> -----Original Message-----
> From: Gary Gregory [mailto:ggregory@seagullsoftware.com]
> 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: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
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-dev-help@jakarta.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message