Problemas com aplicação WEB (JSP e Tomcat)

15 respostas
Jeancarlo_Sartori

Tenho um site desenvolvido usando jsp/javabeans e esta rodando no servidor Tomcat 4.1.30. De tempos em tempos o site fica totalmente perdido (clica em um link vai pra outro) isso teria alguma coisa a ver com o Tomcat? Alguém já passou por isso? O que faço pra resolver isso?

15 Respostas

fabiozanardi

como está seu arquivo web.xml?

Jeancarlo_Sartori
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
http://java.sun.com/dtd/web-app_2_3.dtd”>

<web-app>
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
</web-app>

jesley.sena

Estranho mesmo, obviamente vc já olhou todos os <a href:""> e já se certificou que está tudo ok.
Cara, porque vc não usa um controlador?

Jeancarlo_Sartori

sim os <a href:""> estão todos ok pois o site funciona corretamente, mas de uma hora pra outra “embaralha” tudo.
que Controlador?

obrigado

Jeancarlo_Sartori

ainda nao consegui identificar o que pode estar causando este problema…
Poderia resolver se ao invés do Tomcat estivesse usando o JBoss???

fabiozanardi

teria como vc postar a pasta pra gente dar uma olhada?

Jeancarlo_Sartori

desculpe nao entendi que pasta postar…
gostaria de saber se este problema é com o servidor de aplicações ou alguma configuração deste (número de acessos, por exemplo) ou com a programação do site (tratamento de sessões, por exemplo)

fabiozanardi

a pasta com os arquivos do site

o jboss possui um “tomcat interno” nao creio que resolveria o problema

jesley.sena
Cara um CONTROLADOR é apenas um SERVLET que direciona todas as suas paginas, a vantagem disso é quando vc tem muitas páginas vc controla tudo em um só lugar. Ao invés da jsp "A" chamar a jsp "B", ela chamará UM SERVLET "CONTROLADOR" que encaminhará para a "B". segue o código completo de um servlet CONTROLADOR com 03 JSP's
package loja;
import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Controller extends HttpServlet {

  // initialise the stock bean
  // note that it is done from the controller not a JSP
  public void init(ServletConfig config) throws ServletException {
    super.init(config);
    ServletContext application = getServletContext();
    application.setAttribute("stock",new Stock());
  }

  // this is where is the controller allocates the appropriate redirection
  public void doGet(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {
    ServletContext application = getServletContext();
    
    if (req.getParameter("page") != null) {
        boolean browsing = (req.getParameter("browsing")) != null;
        String page = req.getParameter("page");
        String nextURL = "";
        // the logic here could be factored out
        // into separate request handler classes
        if (page.equals("book") )
            nextURL="/book.jsp";
        else if (page.equals("cd"))
            nextURL="/cd.jsp";
        else if (page.equals("dvd"))
            nextURL="/dvd.jsp";
        else
            nextURL="/errorPage.jsp";

        // now forward the request to the appropriate page
        RequestDispatcher dispatcher = application.getRequestDispatcher(nextURL);
        dispatcher.forward(req,res);
    }
    else {
        RequestDispatcher dispatcher = application.getRequestDispatcher("/welcome.jsp");
        dispatcher.forward(req,res);
    }
  }
}
nesta página vc tem o controla para onde pagina está sendo direcionada. O mais importante if (page.equals("book") ) nextURL="/book.jsp";, essa informação vem da sua JSP, no ACTION DO SEU FORM tem que está assim:
<FORM name="form1" method="get" ACTION="controller?page=/PAGINA_DE_DESTINO.jsp">

1 abraço,
Jesley.Sena
:shock:

fabiozanardi

sua classe chama Controller

esta minusculo no action “controler”
tenta mudar para Controler no ACTION do form

jesley.sena

Fábio, quando colocamos

<form name="form1" method="get" action="controller?page=/PAGINA_DE_DESTINO.jsp">

a palavra controller em minúsculo não tem nada haver com o nome da classe. Esse nome vem do mapeamento do seu web.xml.

Segue o trecho do código

<servlet-mapping>

		<servlet-name>Controller</servlet-name>

		  <url-pattern>/controller</url-pattern>

</servlet-mapping>

Na verdade o que ficou faltando foi a i[/i]/controller.

1 abraço
Jesley.Sena
:shock:

fabiozanardi

fabiozanardi

sim, mas o web.xml nao tinha sido postado junto, e eu normalmente mapeio o servlet ou bean com o mesmo nome

voltando ao problema hehe
vamos tentar ver oq pode ser
alguem tem alguma ideia?

Jeancarlo_Sartori

Uma informação importante, acho que coloquei de maneira errada nos outros posts…
Quando acontece o problema nem sempre no clique no link o redirecionamento vai para um jsp, as vezes vai para uma imagem… (totalmente perdido)

R

Um controlador central distribuindo as requisições para varios actions é uma ótima idéia, pois centraliza a lógica de acessos e é relativamente simples de desenvolver.

:smiley:

Criado 13 de julho de 2005
Ultima resposta 15 de jul. de 2005
Respostas 15
Participantes 4