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

Reply via email to