Sorvlet

Olá pessoal!

Estou tentando implementar um exemplo de sorvlet de uma das apostilas da Caelum, mais não estar dando certo.

Criei a classe:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class OiMundo extends HttpServlet{
  protected void service(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
	  
	  PrintWriter out = response.getWriter();
	  
	  out.println("<html>");
	  out.println("<body>");
	  out.println("Primeira sorvlet");
	  out.println("</body>");
	  out.println("</html>");
	  
  }
}

E no arquivo web.xml coloquei o código:

<servlet>
  <servlet-name>primairaServlet</servlet-name>
  <servlet-class>OiMundo</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>primeiraServlet</servlet-name>
   <url-pattern>/oi</url-pattern>
</servlet-mapping>

Porém o Eclipse reclama desse código no arquivo .xml: The markup in the document following the root element must be well-formed.

O que há de errado?

Obrigado.

Sorvlet? Mistura de sorvete com servlet? Haha.

Cara, posta todo seu xml.

Desculpa, é servlet.

O código do xml é esse que já postei.

Obrigado.

cara, sorvlets sao servlets mais saborosas, menos complicadas de se mecher , elas tem um gosto mais saboroso …

[quote=rbcastro]Desculpa, é servlet.

O código do xml é esse que já postei.

Obrigado.[/quote]

Teu XML é só isso?

Faça 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" version="2.5">

  <display-name>Primeiro Servlet</display-name>

<servlet>  
  <servlet-name>primairaServlet</servlet-name>  
  <servlet-class>OiMundo</servlet-class>  
</servlet>  
  
<servlet-mapping>  
   <servlet-name>primeiraServlet</servlet-name>  
   <url-pattern>/oi</url-pattern>  
</servlet-mapping>  

</web-app>

Se isso que você postou é todo teu xml, então tá faltando coisa:

[code]<?xml version="1.0" encoding="ISO-8859-1"?>

<servlet>
	<servlet-name>primeiraServlet</servlet-name>
	<servlet-class>OiMundo</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>primeiraServlet</servlet-name>
	<url-pattern>/oi</url-pattern>
</servlet-mapping>

[/code]Abraço.

Cara, o seu problema não é com java, nem com j2ee, é com XML:

Um XML bem formado tem que:

  1. ter todas as tags casando e em pinheirinho. Por exemplo, o xml abaixo não está bem formado.
<?xml version="1.0">
<comeco>
    <meio>
</comeco>

Por que? Porque conforme você abre as tags, você tem que ir fechando na ordem inversa. E não pode em nenhuma hipótese deixar uma tag sem fechar.
A correção no meu exemplo seria:

<?xml version="1.0">
<comeco>
    <meio>
    </meio>
</comeco>
  1. Todo XML tem que ter UMA, e somente UMA, tag raiz: Por exemplo, o XML abaixo está mal formado:
<?xml version="1.0">
<comeco>
   <meio>
   </meio>
</comeco>
<comeco2>
<fim>
</fim>
</comeco2>

Por que? Porque existem duas tags “raízes” no código: comeco e comeco2. Uma delas teria que estar dentro da outra.

Se o seu web.xml completo é o que você postou, seu xml está mal formado, porque tem duas raízes…

Nota: um XML bem formado é diferente de um XML válido. Para ser válido, tem que estar de acordo com o padrão esperado do arquivo… ou seja, as tags tem que aparecer em determinada ordem, e com determinado conteúdo.

Pessoal, já pedi desculpe pelo erro de digitação, se poderem ajudar agradeço, mais acho que os sarcasmos estão no lugar errado.

Bom dia rbcastro,

Posta o código todo do seu web.xml, tudo mesmo não só a parte da servlet !

:smiley:

Bom dia Rodrigo!

Conforme já mencionei, estou tentando implementar um exemplo, o qual cita somente isso:

<servlet>     
  <servlet-name>primairaServlet</servlet-name>     
  <servlet-class>OiMundo</servlet-class>     
</servlet>     
     
<servlet-mapping>     
   <servlet-name>primeiraServlet</servlet-name>     
   <url-pattern>/oi</url-pattern>     
</servlet-mapping>

Eu coloquei conforme o andreiribas indicou aí não ocorreu mais erro.

Porém quando eu coloco 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" version="2.5">   
  
  <display-name>Primeiro Servlet</display-name>   
  
<servlet>     
  <servlet-name>primairaServlet</servlet-name>     
  <servlet-class>OiMundo</servlet-class>     
</servlet>     
     
<servlet-mapping>     
   <servlet-name>primeiraServlet</servlet-name>     
   <url-pattern>/oi</url-pattern>     
</servlet-mapping>     
  
</web-app> 

O server Tomcat não starta: Server Tomcat v7.0 Server at localhost failed to start

Como você está tentando rodar o Tomcat? Pelo eclipse? Normalmente, não importa como você rode, seja no eclipse, seja na raça, existe em algum lugar aí um log de execução, indicando o erro exato que está acontecendo…

Pelo Eclipse.

posta o stacktrace.


29/07/2011 11:06:50 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_21\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jdk1.6.0_21/bin/../jre/bin/server;C:/Program Files/Java/jdk1.6.0_21/bin/../jre/bin;C:/Program Files/Java/jdk1.6.0_21/bin/../jre/lib/amd64;C:\oracle\ora92\bin;C:\Delphi\Bin;C:\Delphi\Projects\Bpl\;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\OEM2.0\DLLShared\;C:\Program Files\Java\jdk1.6.0_21\bin;C:\PROGRA~2\Griaule\FINGER~1\bin;C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin;C:\Programas\EclipseJEE;
29/07/2011 11:06:50 org.apache.tomcat.util.digester.SetPropertiesRule begin
AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:agenda' did not find a matching property.
29/07/2011 11:06:51 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
29/07/2011 11:06:51 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
29/07/2011 11:06:51 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 713 ms
29/07/2011 11:06:51 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
29/07/2011 11:06:51 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.12

posta o track quando você acessa o servlet, porque aí parece tudo bem.

nem apareceu o erro que você falou anteriormente:

Server Tomcat v7.0 Server at localhost failed to start

Veja André, eu fiz da seguinte forma:

<?xml version="1.0"?>
<servlet> 

<servlet-name>servletOiMundo</servlet-name> 
<servlet-class>OiMundo</servlet-class> 

<servlet-mapping> 
<servlet-name>servletOiMundo</servlet-name> 
<url-pattern>/oi</url-pattern> 

</servlet-mapping> 
</servlet>

O Eclipse não reclamou porém quando eu entro no navegador e digito o caminho (http://localhost:8080/agenda/oi), veja o que aparece:
HTTP Status 404 - /agenda/oi


type Status report

message /agenda/oi

description The requested resource (/agenda/oi) is not available.


Apache Tomcat/7.0.12

posta o código do teu servlet

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class OiMundo extends HttpServlet{
	protected void service(HttpServletRequest request, HttpServletResponse response)
		      throws ServletException, IOException {
  	  PrintWriter out = response.getWriter();		
		
	  PrintWriter out = response.getWriter();
	  
	  out.println("<html>");
	  out.println("<body>");
	  out.println("Primeira sorvlet");
	  out.println("</body>");
	  out.println("</html>");
	  */
	}
}

Desculpe, é esse o código:


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class OiMundo extends HttpServlet{
	protected void service(HttpServletRequest request, HttpServletResponse response)
		      throws ServletException, IOException {
  	  PrintWriter out = response.getWriter();		
	  
	  out.println("<html>");
	  out.println("<body>");
	  out.println("Primeira sorvlet");
	  out.println("</body>");
	  out.println("</html>");
	 
	}
}