Parece que é mas um bug no Tomcat então

Daniel A. Melo wrote:
[EMAIL PROTECTED]">
Não funcionou,
ele continua criando uma nova sessao sempre que eu utilizo o requestDispatcher para passar
o contexto do servlet para a página JSP.

eu verifiqeui na lista tomcat-users que outras pessoas tem o mesmo problema, e so
conseguiram resolber utilizando o sendRedirect do response, mas ainda nao sei como
utilizá-lo.

sera que nao pode-se resolver isso na configuracao do tomcat?

de qualquer forma eu encontrei no projeto Jakarta um framework para a utilizacao de um
servlet como contrle da aplicacao e as págians JSP apenas como apresentacao...
é seimilar ao que eu estou tentando, a partir do exemplo do livro " Desenvolvendo na web
com javaserver pages".

alguem sabe algo a respeito de como utilizar sessoes com o RequestDispatcher?

tb acho que seria interesasnte para todos discutirmos esse Framework:

jakarta.apache.org/struts


[]´s

Daniel A.

Sven van ´t Veer wrote:


eis o codigo relevante da minha index.jsp:

------------------
<%

session = request.getSession(false);

  System.out.println("em Index.jsp - sessao = " + session.getId());
if (session == null){

  if((session.getAttribute("destaques")==null)||
(session.getAttribute("menuSecoes")==null))
{
session = request.getSession(true);

   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]
-------------------------------------------------------------------------


------------------------------ 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]
-------------------------------------------------------------------------


------------------------------ 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