Problema aplicação Java Web Servlet Metodo GET

Tenho aplicações Java Web Servlet que roda em um servidor Glassfish e funcionam normalmente. Estas aplicações são usadas por vários usuários e cada um acessa com login e senha diferentes. Cada usuário ao ter login e senha validados, ele consegue entrar na aplicação, onde cria-se uma sessão que torna a manipulação de dados exclusiva para o usuário logado. Assim, um usuário não consegue ver o que o outro está fazendo. Todo este processo funciona normalmente.

O problema que acontece é que, eventualmente, quando o usuário vai entrar em uma tela qualquer, a aplicação volta para a tela de login. Indiferente da quantidade de vezes que o usuário tentar entrar na aplicação e tentar entrar na tela específica, volta para a tela de login.
Exemplo: O usuário faz login, passa pela tela 1 e ao tentar entrar na tela 2, a aplicação volta para a tela de login. Se ele faz o login novamente, passa pela tela 1 e ao tentar entrar na tela 2 novamente, volta para a tela de login, e assim sucessivamente. Isto pode acontecer na tela 1, 2, 3,… não tem um padrão.

Ele só consegue dar continuidade ao trabalho se der um refresh na tela quando estiver na tela de login, pois o endereço para entrar na tela ainda está no navegador. O processo de entrar em uma tela se dá por método GET.

Este problema não tem um padrão e pode acontecer em qualquer tela. Não tem uma tela específica e também não tem registro em log no Glassfish e nem no navegador de internet. Também, a sessão do usuário continua funcionando normalmente.

Por favor, se alguém puder me ajudar nesta questão.

Muito obrigado

Olá colega não sei se pode ajudar, mas tem essa forma simples de autenticar e manter usuario logado enquanto ele não informar que irá sair.

Primeiramente voce pode criar uma classe de DAO:

public class UserLogin {
	private String login;
	private String senha;
	
	
	
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	
}

Depois crier uma classe de Filtro para interceptar todas as url que usuario tentar acessar:

@WebFilter(urlPatterns = {"/pages/*"})
public class FilterAutenticacao implements Filter{
	private static Connection connection;

	//EXECUTA ALGO QUANDO APLICAÇÃO É DERRUBADA
	@Override
	public void destroy() {	}
	
	//INTERCEPTA TODAS AS REQUIÇÕES
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		/*
		 * IREMOS VERIFICAR SE O USUARIO ESTÁ LOGADO
		 */
		HttpServletRequest req = (HttpServletRequest) request;
		HttpSession session = req.getSession();
		
		String urlParaAutenticar = req.getServletPath();
		//RETORNA NULL CASO NÃO ESTEJA LOGADO
		UserLogin userlogado = (UserLogin)  session.getAttribute("usuario");
		
		if(userlogado == null && !urlParaAutenticar.equalsIgnoreCase("/pages/ServletAutenticacao")) {//USUARIO NÃO LOGADO
			
			RequestDispatcher dispatcher = request.getRequestDispatcher("/autenticar.jsp?url="+urlParaAutenticar);
			dispatcher.forward(request, response);	
			return; //PARA O PROCESSO REDIRECIONAR
		}
		
		//EXECUTA AS AÇÕES DO REQUEST E RESPONSE
		chain.doFilter(request, response);
		
	}
	
	//EXECUTA ALGO QUANDO A APLICAÇÃO É INICIADA
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
	
		connection = ConnectionDataBase.getConnectionDB();
		connectionDataBase2 = ConnectionDataBase2.getConnectionDB2();
		//connectionMySQL = ConnectionDataBaseMySQL.getConnectionDBMySQL();
	}

}

Depois você cria a Servlet que irá receber os parâmetros para o acesso e que irá remove o usuário da sessão quando acionar algum botão para deslogar.

@WebServlet("/pages/ServletAutenticacao")
public class ServletAutenticacao extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

    public ServletAutenticacao() {
        super();
    }


	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.getWriter().append("Served at: ").append(request.getContextPath());
		
		if(Boolean.parseBoolean(request.getParameter("deslogar"))) {
			//ADICIONA USUARIO LOGADO NA SESSÃO
			HttpServletRequest req = (HttpServletRequest) request;
			HttpSession session = req.getSession();
			session.invalidate();
			
			//redireciona para login novamente
			response.sendRedirect("../index.jsp");
		}
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
		
		
		String login = request.getParameter("login");
		String senha = request.getParameter("senha");
		String url = request.getParameter("url");
		
		//NESTE MOMENTO PODE SER FEITO UMA VALIDAÇÃO NO BANCO DE DADOS
		if(login.equalsIgnoreCase("admin") && senha.equalsIgnoreCase("123")) {
			
			UserLogin userLogin = new UserLogin();
			userLogin.setLogin(login);
			userLogin.setSenha(senha);
			
			//ADICIONA USUARIO LOGADO NA SESSÃO
			HttpServletRequest req = (HttpServletRequest) request;
			HttpSession session = req.getSession();
			session.setAttribute("usuario", userLogin);
			
			//REDIRECIONA PARA O SISTEMA E AUTORIZA
			RequestDispatcher dispatcher = request.getRequestDispatcher(url);
			dispatcher.forward(request, response);	
			
			
		}else {
			//REDIRECIONA PARA LOGIN NOVAMENTE
			RequestDispatcher dispatcher = request.getRequestDispatcher("/autenticar.jsp");
			dispatcher.forward(request, response);	
		}
		
		
	}

}

Aqui é o JSP para realizar o post da autenticação que irá para ServletAutenticacao:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>AUTENTICAÇÃO</title>
</head>
<body>
	<h1>AUTENTICAR USUARIO</h1>
	<form action="ServletAutenticacao" method="post">
	<input type="hidden" id="url" name="url" value="<%= request.getParameter("url") %>">
		<table>
			<tr>
				<td>Login</td>
				<td><input type="text" name="login"></td>
			</tr>
			<tr>
				<td>Senha</td>
				<td><input type="password" name="senha"></td>
			</tr>
			<tr>
				<td><input type="submit" value="Logar"></td>
			</tr>
		</table>
	
	</form>
</body>
</html>

Espero que isso possa ajuda-lo em seu projeto.

Olá Rob, agradeço sua atenção e ajuda. Vou analisar sua sugestão e ver qual será o resultado.
A questão é que, pelo que consegui verificar do problema que acontece, pois infelizmente não consigo simular o mesmo, a sessão e o usuário não são invalidados, pois ao sair da tela, ao dar um simples refresh no navegador, o sistema entra normalmente.
Não sei se possa ser algo relacionado com o navegador que acaba não reconhecendo o metodo get ou relacionado ao código do sistema mesmo.
De qualquer forma, muito obrigado pela sua ajuda.