tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alejandro Henao González <desarrollos...@dqingenieria.com>
Subject Re: Problem with threads in stage Service (Tomcat 7.0.14)
Date Wed, 03 Aug 2011 19:53:36 GMT
Thanks to all. The problem was the static hashmap. I removed the static keyword to the variable
and problem solved. 

----- Mensaje original -----

De: "Christopher Schultz" <chris@christopherschultz.net> 
Para: "Tomcat Users List" <users@tomcat.apache.org> 
Enviados: Lunes, 1 de Agosto 2011 20:11:27 
Asunto: Re: Problem with threads in stage Service (Tomcat 7.0.14) 

-----BEGIN PGP SIGNED MESSAGE----- 
Hash: SHA1 

Alejandro, 

On 7/29/2011 11:55 AM, Alejandro Henao González wrote: 
> public class HTMLEncoder { private static Map mapChar2HTMLEntity; 
> 
> private final static char [] characters = { 
> 'á','ú','ó','é','í','ñ','Á','Ú','Ó','É','Í','°','ü' }; private final 
> static String[] entities = { 
> "&aacute;","&uacute;","&oacute;","&eacute;","&iacute;","&ntilde;","&Aacute;","&Uacute;","&Oacute;","&Eacute;","&Iacute;","&deg;","&uuml;"

> }; 
> 
> public HTMLEncoder() { mapChar2HTMLEntity= new HashMap(); int 
> longueur = characters.length; 
> 
> for (int i = 0; i < longueur; i++) mapChar2HTMLEntity.put(new 
> Character(characters[i]), entities[i]); } 

So you have Character -> String (entity reference). Your Map is not 
synchronized, but it doesn't have to be: you are only calling get() on 
it so there shouldn't be any synchronization issues here. 

> public String encode(String s) { int longueur = s.length(); final 
> StringBuffer sb = new StringBuffer(longueur * 2); 

Big buffer every time? 

> char ch; 
> 
> for (int i =0; i < longueur ; ++i) { ch = s.charAt(i); 
> 
> if ((ch >= 63 && ch <= 90) || (ch >= 97 && ch <= 122)) sb.append(ch);

> else { String ss = (String)mapChar2HTMLEntity.get(new 
> Character(ch)); 

New Character object every time? Mmm. You might want to choose a more 
optimized storage system so you don't have to create a new object every 
time. 

> if(ss==null) sb.append(ch); else sb.append(ss); } } return 
> sb.toString(); } 

Aside from any other strange issues you are having, you might be wasting 
a lot of time (and invoking a lot of GC) by creating a large 
StringBuffer for every invocation. You might want some more complicated 
logic to determine if you even need to create such a buffer. 

Honestly, I don't see much wrong with this class. I don't see any use of 
System.gc and I don't see any connection reset. Was there a post that I 
missed? 

- -chris 
-----BEGIN PGP SIGNATURE----- 
Version: GnuPG v1.4.10 (MingW32) 
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ 

iEYEARECAAYFAk43Tr4ACgkQ9CaO5/Lv0PBk4QCglB4MNYVbEvwsqZFwiOYupAUv 
J84AnRAnw2o6PwTRiaNnNFc9iyNq0pUS 
=UWQu 
-----END PGP SIGNATURE----- 

--------------------------------------------------------------------- 
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org 
For additional commands, e-mail: users-help@tomcat.apache.org 



Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message