Я задал этот вопрос о многопоточности в сервлете, и многие люди предлагают использовать статическую переменную.
Если я установил статическую переменную и мне нужно ее инициализировать. Например, общедоступные статические разрешения семафора;
Сначала я попытался инициализировать его в методе init () фильтра, связанного с сервлетом:
public void init(FilterConfig conf) throws ServletException {
// TODO Auto-generated method stub
try{
limit = Integer.parseInt(conf.getInitParameter("filterLimit"));
permits = new Semaphore(limit);
}catch(Exception ex){
conf.getServletContext().log("Fail to set the parameter : permits.");
throw new ServletException(ex.getMessage());
}
}
Тогда я подумал, что при таком количестве потоков все потоки, выполняющие метод init (), будут инициализировать семафор, он не должен работать.
Затем я попытался использовать статический инициализатор:
static{
try{
limit = Integer.parseInt(conf.getInitParameter("filterLimit"));
permits = new Semaphore(limit);
}catch(Exception ex){
conf.getServletContext().log("Fail to set the parameter : permits.");
throw new ServletException(ex.getMessage());
}
}
Но я не могу использовать объект conf, так как он передается из метода init (). Я хочу получить предельное число из web.xml, вместо того, чтобы жестко его кодировать. Есть идеи, чтобы решить эту проблему?