PDA

Visualizza la versione completa : [java-servlet] ambito delle variabilii


Prazision
01-05-2005, 17:18
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

Prazision
01-05-2005, 19:15
risolto grazie

Loading