public class MioFilter implements Filter {
private FilterConfig filterConfig = null;
private String h;
public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest request=null;
HttpServletResponse response=null;
request = (HttpServletRequest)req;
response = (HttpServletResponse)res;
h=(String)request.getParameter("a");
for(int y=0;y<100000;y++){
System.out.println(y+" "+h);
}
chain.doFilter(request,response);
}
public void destroy()
{
filterConfig = null;
}
}
se uno si crea un filtro(o anche una servlet) e utilizza una variabile di classe(come nel mio caso la stringa h)ho notato che accade che tale variabile (sotto tomcat) viene condivisa da tutti i thread che richiamano tale filtro(o nel caso di una servlet la servlet).
cio' (penso) perchè la servlet (o il filtro) istanziata da tomcat è una sola e funziona in multithreading.
per ovviare a questa cosa(che potrebbe causare evidenti danni) conviene dichiarare direttamente le variabili dentro i metodi, giusto???(oppure sincronizzare il codice ma mi sembra eccessivo)
grazie