não consigo executar meus servlets no tomcat 6.0.20

2 respostas
W

[color=blue][/color]

Olá galera do guj. Sou novo aqui na área e tô apanhando a mais de 15 dias tentando fazer minha aplicação rodar no tomcat 6.0.20 à unha. Primeiro eu apanhei para fazer o meu contexto funcionar. Antes nem isso eu conseguia. Agora não consigo rodar meus servlets nem com muito esforço. Já tentei várias àrvores de diretórios e não dá certo. Vou colocar aqui duas das minhas tentativas.

OBS. As variáveis de ambiente já estão corretamente configuradas.

Esta funcionou o contexto e a página index.jsp foi chamada
Eu criei uma aplicação ou contexto de aplicação chamado minhaApp cuja àrvore de diretórios é a seguinte:

C:

\Documents and Settings

\WAGNER

\Desktop

\minhaApp

\src (dentro do minhaApp)

alomundo.java (dentro do src)

\web (dentro do minhaApp)

index.jsp (dentro do web)

teste.html (dentro do web)

\WEB-INF (dentro do web)

minhaApp.xml (dentro do WEB-INF)

\lib (dentro do WEB-INF)

\classes (dentro do WEB-INF)

alomundo.class (dentro da classes)

Criei esta estrutura. Aí eu li em um tutorial que deve ser criado um arquivo xml dentro da pasta conf\catalina\localhost um arquivo com o mesmo nome do contexto da aplicação, neste caso minhaApp. Pois bem, o arquivo ficou o seguinte:

<?xml version="1.0" encoding="iso-8859-1" ?> 
  <Context path="/minhaApp" docBase="C:\Documents and Settings\WAGNER\Desktop\minhaApp\web" reloadable="true" crossContext="true" debug="3" />

Blz. Aí depois eu criei o arquivo minhaApp.xml como descrevi na minha árvore de diretórios. O arquivo ficou assim:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
  <display-name>Desenvolvimento</display-name>
	<description>
		Descritor do contexto de desenvolvimento.
	</description>

	<servlet>
		<servlet-name>alomundo</servlet-name>
		<servlet-class>
			alomundo
		</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>0</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>alomundo</servlet-name>
		<url-pattern>/alomundo</url-pattern>
	</servlet-mapping>
	
	<welcome-file-list>
  <welcome-file>index.jsp</welcome-file> 
  </welcome-file-list>

  </web-app>

Olhei os logs do TomCat e não há nenhum erro. Aqui está o código da classe alomundo.

import java.io.*;   
import javax.servlet.*;   
import javax.servlet.http.*;   
  
public class alomundo extends HttpServlet   
{   
    public void doGet(HttpServletRequest request, HttpServletResponse response)   
        throws IOException, ServletException   
    {   
        String alo = "Alô Mundo!";   
        PrintWriter out = response.getWriter();   
  
        out.println("<html>");   
        out.println("<body><h1>" + alo + "</h1></body>");   
        out.println("</html>");   
    } // doGet   
} // class AloMundoServ

Quando chamo o contexto, o browser mostra corretamente a página index.jsp. Quando chamo o servlet de acordo com a URL definida dá a mensagem 404 ou aparece isto

Não é possível encontrar: “http://localhost:8080/minhaApp/alomundo” Erro - Não é possível encontrar o Servidor

e olha que quando eu chamo apenas http:/localhost:8080 aparece diretinho a página do tomcat.

Já a segunda tentativa foi criar a aplicação dentro da pasta webapps. Desta vez a pasta chama-se myprog. Desta forma nem o a página index.jsp aparece. Dá erro logo de cara. Como o primeiro projeto é bem parecido com a maioria dos que eu já criei vou colocar apenas o arquivo de contexto desta aplicação colocado dentro do diretório conf\catalina\localhost e um erro que aparece no log do tomcat.

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

<Context path="/myprog" docBase="C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\webapps\myprog\web"
 reloadable="true" crossContext="true" debug="3"/>

O erro que aparece no log.

20/07/2009 21:59:32 org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.16.
20/07/2009 21:59:32 org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
20/07/2009 21:59:33 org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
20/07/2009 21:59:33 org.apache.coyote.ajp.AjpAprProtocol init
INFO: Initializing Coyote AJP/1.3 on ajp-8009
20/07/2009 21:59:33 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1423 ms
20/07/2009 21:59:33 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
20/07/2009 21:59:33 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.20
20/07/2009 21:59:34 org.apache.catalina.startup.HostConfig deployDescriptor
WARNING: A docBase C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\webapps\myprog\web inside the host appBase has been specified, and will be ignored
20/07/2009 21:59:34 org.apache.coyote.http11.Http11AprProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
20/07/2009 21:59:34 org.apache.coyote.ajp.AjpAprProtocol start
INFO: Starting Coyote AJP/1.3 on ajp-8009
20/07/2009 21:59:34 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1144 ms

Aparece a mensagem:

WARNING: A docBase C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\webapps\myprog\web inside the host appBase has been specified, and will be ignored

Neste exemplo usei esta classe chamada TestingServlet.java

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

public class TestingServlet extends HttpServlet {
     public void doGet(HttpServletRequest request,
             HttpServletResponse response) throws ServletException, IOException {
         
         PrintWriter out = response.getWriter();
                     out.println("<HTML>");
                     out.println("<HEAD>");
                       out.println("<TITLE>TESTING SERVLET</TITLE>");
                     out.println("</HEAD>");
                     out.println("<BODY>");
                       out.println("Welcome to the Servlet Testing Center");
                     out.println("</BODY>");
                     out.println("</HTML>");
     }
}

E o arquivo web.xml ficou o seguinte:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
  <display-name>Desenvolvimento</display-name>
	<description>
		Descritor do contexto de desenvolvimento.
	</description>

	<servlet>
		<servlet-name>Testing</servlet-name>
		<servlet-class>
			TestingServlet
		</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>0</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>Testing</servlet-name>
		<url-pattern>/servlet/Testing</url-pattern>
	</servlet-mapping>
	
	<welcome-file-list>
  <welcome-file>index.jsp</welcome-file> 
  </welcome-file-list>

  </web-app>

POR FAVOR ME AJUDEM.

2 Respostas

furutani

Tenta assim http:/localhost:8080/servlet/Testing

W

Valeu por responder Furutani. Ainda não deu certo. Eu não sei o que pode estar errado porque eu já utilizei também o netbeans e com ele deu certo. Consegui até chamar o servelet criado através dele pelo browser. Já criando o arquivo web.xml manualmente eu não consegui e eu fiz tudo exatamente igual aos arquivos web.xml criados pelo netbeans.

Valeu.

Criado 21 de julho de 2009
Ultima resposta 22 de jul. de 2009
Respostas 2
Participantes 2