Ola todos,

estou desenvolvendo uma aplicação centrada em servlets. Utilizo JSp
apenas para Apresentação e um Servlet que faz o controle de fluxo. È uma
aplicação nos moldes da aplicação de Faqs do livro "Desenvolvendo na WEb
com JavaServer Pages".

Estou tendo um problema com objetos que estou colocando na sessão.

Na página index.jsp eu verifico se determinado objeto está na sessão,
se não estiver, quer dizer que o usuário está chegando pela primeira
vez, então redireciono para o servlet que instancia os objetos, coloca
na sessao e através de um requestdispatcher retorna para a página JSP.
Sendo que que ao voltar para index.jsp, uma nova sessão é criada, mesmo
que meu browser esteja aceitando cookies.
O pior que tem hora que funciona.

eis o codigo relevante da minha index.jsp:

------------------
<%
  session = request.getSession();
  System.out.println("em Index.jsp - sessao = " + session.getId());

  if((session.getAttribute("destaques")==null)||
(session.getAttribute("menuSecoes")==null))
   {
   System.err.println("destaques e menuSecoes nulos, enviando para o
servlet");
   %>
   <jsp:forward page="proxy?pagina=index.jsp" />
   <%
   }

  detran.MenuSecaoBean[] menuSecoes = (pkg.MenuSecaoBean[])
sessao.getAttribute("menuSecoes");
  %>
<jsp:useBean id="menuSecao" class="pkg.MenuSecaoBean" >
<jsp:useBean id="time" class="pkg.TimeBean" />
<jsp:useBean id="banners" class="pkg.BannersBean"/>
<html>
<head>
--------------


o meu Servlet:
----------------
package pkg;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class proxy extends HttpServlet {

  //Initialize global variables
// private String jspdir ="/";
 private String error = "/error.jsp";
private boolean DEBUG = true;


 public void service (HttpServletRequest req, HttpServletResponse res)
   throws ServletException, IOException{

   String proxPagina;
   //int codSecao;
   Command cmd;

       try {
   proxPagina = "/" + req.getParameter("pagina");
   if (proxPagina == "/")
        throw new CommandException("pagina nao especificada");

    if (( req.getParameter("secao") ==
null)&&(req.getParameter("divisao")==null)&&(proxPagina.equals("/index.jsp"))){

        cmd = new GetIndexCommand(proxPagina);
         proxPagina = cmd.execute(req);
         if (DEBUG){
                System.out.println("no servlet passou por
GetIndexCommand");
                System.out.println("Servlet id Sessao : " +
req.getSession().getId());
                }
      }
      else if ((req.getParameter("divisao")==null)&&(
req.getParameter("secao") != null)){
        cmd = new GetSecaoCommand(proxPagina);
         proxPagina = cmd.execute(req);
             if (DEBUG)
                System.out.println("no servlet passou por
GetDivisoesCommand");
         }
          else if ((req.getParameter("divisao")!=null)&&(
req.getParameter("secao") == null))
          {
           cmd = new GetDivisaoCommand(proxPagina);
           proxPagina = cmd.execute(req);
              if (DEBUG)
                System.out.println("no servlet passou por
GetDivisoesCommand");
              }
            else
                 throw new CommandException("Parametros estao fora do
padrao");
           /*
             if ( req.getParameter("secao") == null){
        throw new CommandException("secao nao especificada");
      }
      else if (req.getParameter("divisao")==null){
        cmd = new GetDivisoesCommand(proxPagina);
         proxPagina = cmd.execute(req);
         }
          else{
           cmd = new GetDivisaoCommand(proxPagina);
           proxPagina = cmd.execute(req);


           */

   }//fim try
   catch (CommandException ex) {
        req.setAttribute("javax.servlet.jsp.jspException", ex);
        proxPagina = error;
   }//fim catch



   RequestDispatcher rd;
   ServletContext sc = getServletContext();
   rd = sc.getRequestDispatcher( proxPagina );

   if ( DEBUG ) {
  System.out.println( "System.out, next = " + proxPagina);
  System.out.println( "System.out, rd = " + rd );
  System.err.println( "System.err, rd = " + rd );
  System.out.println( "System.out, sc = " + sc );

 }



   try {
   rd.forward( req, res );
 }
 catch ( IOException e ) {
  System.out.println( "IOException em Servlet" );
       }




   }

}
--------------


o meu getIndexComman
-----------------------------
package pkg;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class GetIndexCommand implements Command {

  private String proxPagina;
  private boolean DEBUG = true;

  public GetIndexCommand(String proxPagina){
  this.proxPagina=proxPagina;
  }

  public String execute(HttpServletRequest req) throws CommandException
{

      HttpSession sessao = req.getSession();
   try {

  if
((sessao.getAttribute("destaques")==null)||(sessao.getAttribute("menuSecoes")==null))
{



 pkgRepositorio repositorio = pkgRepositorio.getInstancia();

  DestaqueBean[] destaques = repositorio.getDestaques();

   if (DEBUG)
          System.out.println("em GetIndexCommand: destaque 0 ->" +
destaques[0].getMensagem());



    if (DEBUG)
          System.out.println("em GetIndexCommand: ID Sessao ->" +
sessao.getId());


   sessao.setAttribute("destaques", destaques);



  MenuSecaoBean[] menuSecoes = repositorio.getMenuSecaoAll();
  sessao.setAttribute("menuSecoes", menuSecoes );


   BannersBean banners = repositorio.getBanners();

   if (DEBUG){
          System.out.println("em GetIndexCommand: banners -> " +
banners.getBanner());
           System.out.println("em GetIndexCommand: ID Sessao ->" +
sessao.getId());

          }
  //sessao.setAttribute("banners", banners);

  }//fim if


   return this.proxPagina;
    }
  catch (RepositorioException e) {
    throw new CommandException("GetDestaquesCommand: "+e.getMessage());
  }catch(UnknownSecaoException ex){
  throw new CommandException("GetDestaquesCommand: "+ex.getMessage());
  }

  }
}


------------
está tuod ocorrendo como planejado, exceto que uma nova sesao é criada
ao retornar a index.jsp.

espero que alguem possa me ajudar.


[]´s


Daniel A.


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a