Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [java-servlet] ambito delle variabilii

    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

  2. #2

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.