sesiones usando jfs

Hola que tal, acudo a ustedes en busca de su ayuda para el manejo de sesiones en jsf, le explico un poco mi poryecto: tengo dos paquetes uno llamado modelo y otro controlador y una carpeta llamada web pages, en el modelo he creado un "Entity Class from database" de cada una de las tablas de mi base de datos, la carpeta he creado "JSF Pages from entity class" por cada una de mis tablas de la base de datos, ahora bien al hacer esto netbeans automáticamente crea los paquetes llamados controlador ,hasta acá todo bien puedo realizar operaciones CRUD sin mayor problema, mi problema cuando quiero manejar sesiones. Lo intento de la siguiente forma:creo un servlet y dentro del codigo pongo esto

//operacion es el valor que tiene value en el boton del formulario
if(request.getParameter("operacion").equals("Envia Mensaje"))
                {
                    String login=request.getParameter("usuario");
                    String pass=request.getParameter("pass");
                   //llamo a un metodo para validar que el usuario exista en la bd y su contraseña sea la correcta
                    boolean resultado=validarIngreso(login,pass);
                    if(resultado)
                    {
                          //esta linea si me estable un id de sesion
                        request.getSession(true).setAttribute("User",login);
                     HttpSession sesion=request.getSession();
                      System.out.println("IdSesion:"+request.getSession().getId());
                        //en el primer tutorial que leei me indicaba esta forma , pero me da un null pointer exception sin mas mensaje en el log
                     // request.getRequestDispatcher("faces/index.xhtml").forward(request, response);
                        // de esta forma sigue su curso , hasta aca todavia tengo un id de sesion
                      response.sendRedirect("faces/index.xhtml");
                    }
                    else
                    {
                       
                    }
                }

               //y con este método pretendo terminar la sesión , el botón que debería provocar esta acción se encuentra en una pagina xhtml
                 if(request.getParameter("operacion").equals("salir"))
                 {
                     request.getSession().setAttribute("User",null);
                     request.getSession().invalidate();
                     request.getRequestDispatcher("login.html").forward(request, response);
                       System.out.println("IdSesion:"+request.getSession().getId());
                 }

Según yo hasta con eso manejo sesiones, pero digamos inicio sesion edito algun campo, guardo ese link, "cierro sesion" intetnto acceder al link que copie sin inicar sesion de nuevo y ohh sopresa el link esta activo cuando lo que deseo es que no lo este , que tenga que volver a iniciar sesion

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de edgar.martinez

JSF con Managed Bean

Te recomiendo usar Managed Beans para el login. Un ejemplo lo puedes ver aqui.

http://docs.jboss.org/webbeans/reference/current/en-US/html/example.html

Checa getSession(true), pudieras estar teniendo mas de una session y por eso te deja alguna(s) activas.

Saludos

Imagen de puzzlemaniaco

Gracias !!!

Lo resolvi de la siguiente forma

 String login=request.getParameter("usuario");
                    String pass=request.getParameter("pass");
                    boolean resultado=validarIngreso(login,pass);
                    if(resultado)
                    {
                        HttpSession sesion_actual=request.getSession(true);
                        sesion_actual.setAttribute("Usuario",login);
                        response.sendRedirect("opciones.jsp");
                    }

Con eso creo mi sesion , el metodo validar ingreso busca en la bd si existe ese usuario y si es el pass correcto,, despues cada pagina jsp valida que exista la sesion

<%
   HttpSession sesion_actual=request.getSession(true);
   String usuario=(String) sesion_actual.getAttribute("Usuario");
   if(usuario==null)
   {
      response.sendRedirect("../index.html");
   }
%>

No se si sea la forma correcta , pero me ha sacado del apuro , que tenga mas tiempo probare la solucion que me has dado