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

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…
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>");
}
}