Olá pessoal
Estou passando por um problema em minha aplicação Web Servlet/JSP
Tenho uma Servlet que recebe as requisições e repassa através de reflexão para as outras Servlets
Porém quando há 2 ou mais requisições ao mesmo tempo a HttpSession recebe o mesmo endereçamento de memoria, em Threads diferentes, ocasionando diversos problemas e inconsistências.
O Servlet despachante é esse:
ServletController.java
public class ServletController extends HttpServlet {
protected String paginaRetorno = "inicio.jsp";
protected Session sessaoHBN;
protected HttpServletRequest request;
protected HttpServletResponse response;
protected HttpSession sessaoHTTP;
protected synchronized void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.request = request;
this.response = response;
String acao = request.getParameter("acao");
try {
sessaoHTTP = request.getSession();
sessaoHBN = HibernateUtil.openSession();
Integer codEmpresa = (Integer) sessaoHTTP.getAttribute("codEmpresa");
if ((codEmpresa != null) || "efetuarLogin".equals(acao) || "cadastrarEmpresa".equals(acao)) {
Class clazz = this.getClass();
Method[] metodos = clazz.getMethods();
for (Method metodo : metodos) {
if (metodo.getName().equals(acao)) {
metodo.invoke(this, null);
}
}
} else {
this.setPaginaRetorno("login.jsp");
}
RequestDispatcher dispatcher = request.getRequestDispatcher(this.getPaginaRetorno());
dispatcher.forward(request, response);
} catch (Exception e) {
e.printStackTrace();
} finally {
HibernateUtil.closeCurrentSession();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
/**
* @return the paginaRetorno
*/
public String getPaginaRetorno() {
return paginaRetorno;
}
/**
* @param paginaRetorno the paginaRetorno to set
*/
public void setPaginaRetorno(String paginaRetorno) {
this.paginaRetorno = paginaRetorno;
}
}
Necessito de uma ajuda para resolver esse problema, pois já verifiquei diversas possibilidades e não consegui encontrar uma solução
Efetuei também diversas pesquisas porém sem sucesso.
Gostaria de agradecer de antemão a atenção.
Saudações,
Anderson Souza