Dúvida com a interface Servlet

8 respostas
FranciscoCoelho

Olá GUJnaltas, estou iniciando uns estudos em Java para WEB e as dúvidas começam a florar.... É o seguinte, eu criei uma classe que implementa a interface Servlet, isso para eu ver como funciona a chamada e o comportamento dos métodos init(), service() e destroy().
Até este ponto tudo bem.
O que aconteceu foi o seguinte: utilizo a IDE Eclipse por ser minha preferida e me proporcionar um maior conforto, só que quando declarei e executei esta minha classe que implementa Servlet no Eclipse da o seguite erro (imagem a baixo) e no console onde esperava ser exibida algumas mensagem não apareceu nada, a não ser as informações do Server.
Diferentemente quando utilizo o NetBeans, que execultou numa boa, mostrou uma página em branco e no console exibiu as mensagem que esperava.

Será o que pode ter ocorrido ? Espero que algum possa me ajudar e exclarecer minha dúvida. Desde já agradeço a atenção de todos.

As imagens vão abaixo, junto com o código que codifiquei....

import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


public class PrimitiveServlet implements Servlet {
	
	public void init(ServletConfig arg0) throws ServletException {
		
		System.out.println("Método INIT");
	}

	public void service(ServletRequest arg0, ServletResponse arg1)
			throws ServletException, IOException {
		
		System.out.println("Método SERVICE");
	}
	
	public void destroy() {
		
		System.out.println("Método DESTROY");
	}

	public ServletConfig getServletConfig() {
		return null;
	}

	public String getServletInfo() {
		return null;
	}
}


Erro que acontece quando execulto o servlet no Eclipse....

[img]http://sites.google.com/site/fcocoelho07/anexosguj/erro_eclipse.bmp[/img]

Imagem do console do Eclipse onde esperava ser exibida as mensagens codificadas na classe, como exibida acima...

[img]http://sites.google.com/site/fcocoelho07/anexosguj/erro_eclipse_2.bmp[/img]

Espero que algum possa de alguma forma me da uma força... E novamente agradeço a todos desde já!

8 Respostas

wandersonxs

Posta o erro…
a imagem não esta aparecendo…
Seu servlet está em um projeto WEB dentro do eclipse?

Abraços
Wanderson

F

Verifique o server.xml do Tomcat ou a configuração debug do tomcat no seu eclipse

E

Hum…
a) tudo que está sob /WEB-INF/ é “invisível” para o browser. Portanto, a URL que você tentou usar está errada.

b) Você só consegue chamar uma classe servlet com a extensão “.java” se você configurou o web.xml de forma que reconheça a extensão .java. Por exemplo, o site do GUJ (JForum) é configurado dessa maneira.

FranciscoCoelho

Pois é Wanderson… Quando executo minha classe, aparece aquela primeira imagem que postei no simulador de navegador do próprio Eclipse e no console é exibido a segunda imagem. Isso no Eclipse!
Só que no NetBeans, o simulador de navegador exibi uma página em branco (como esperado) e no console mostra as informações do server e as mensagens que postei no código (que tmb foi no 1º post).

Entendeu ? Ai gostaria de saber algum sabe me infromar, na verdade ajudar, sobre o que pode ta ocorrendo quando tento executar no Eclipse.

A

FranciscoCoelho, a resposta do entanglement pode te ajudar…

Realmente a URL está errada… como você configurou este servlet no XML?
Vendo o mapeamento do XML fica mais facil descobrir qual URL precisa chamar

Algo como http://localhost:8080/Estudando_Livro_2/PrimitiveServlet.do, mas para isto precisa mapear o xml como PrimitiveServlet.do ou qualquer outro link que preferir.

OBS: Cuidado para não confundir PrimitiveServlet.java, com o seu código java que fica com extensao .java
Ou seja no mapeamento você pode por qualquer link, e o Container nem vai se preocupar com isto, qual é a extensao… na verdade ele nem usa isto como extensao

Att

FranciscoCoelho

O meu arquivo de distribuição descritiva .xml está da seguinte forma.

<?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>Estudando_Livro_2</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>  
  </welcome-file-list> 
  
  	  	<servlet>
  		<servlet-name>PrimitiveServlet</servlet-name>
  		<servlet-class>PrimitiveServlet</servlet-class>
  		</servlet>
  
</web-app>

Só que é o seguinte, eu coloco o curso do mouse sob o código e click em run e depois em run on server e acontece a mesma coisa.
Não consigo exibir o simulador do navegador em branco e nem as mensagem no console.

O simulador de navegador e o console ficam do jeito das imagens no meu primeiro post!


Vlw...

P

Se funciona no NetBeans normal, tenta dar um clean no projeto.
Quando acontece aqui com o flex eu do um clen q resove

A

Tentou acessr assim
http://localhost:8080/Estudando_Livro_2/PrimitiveServlet

E como o PedroGuerra citou, é interessante dar um clean, e até um build no projeto… !!!
Pode ser que sua classe não está compilada e o container não há encontra

Att

Criado 4 de novembro de 2009
Ultima resposta 4 de nov. de 2009
Respostas 8
Participantes 6