Servlets + JBoss + Eclipse

Saudações a todos!

      Preciso URGENTEMENTE de uma ajuda: meu servlet não roda de jeito nenhum!!!
      Estou utilizando o Eclipse 3.0.0rc2 com o Lomboz e o JBoss 3.2.3. Quando solicito um servlet através de um formulário HTML, surge a indesejável mensagem  'Page not found'. O engraçado é que, se a chamada for feita a uma página JSP, nada de anormal acontece. Seria algum problema nas variáveis de ambiente? De acordo com o livro 'Java 21 dias Professional Reference', no Windows XP (SO que utilizo) não é necessário sequer 'setar' o CLASSPATH. Isso é verdade, pois, além de não ocorrer problemas com o SDK 1.4.2 (JAVA_HOME, por exemplo) ao inicializar o JBoss, percebo que a  variável JBOSS_HOME está configurada corretamente. 
      Se alguém puder me ajudar, gostaria de agradecer antecipadamente a atenção.[/b][/list]

seja bem-vindo ao Portal Java Adam… teu problema é bem simples de se resolver… só preciso saber toda a tua configuração, poderia postar pra gente ai a estrutura de pastas da tua aplicação o teu web.xml? :slight_smile:

Obrigado Matheus pela atenção!!!

Bem, há na raiz do meu computador (C:) uma pasta denominada Techno com todas as tecnologias para desenvolvimento de software, incluindo o Eclipse, JBoss e, obviamente, o SDK/ JRE.
As variáveis de ambiente são as seguintes:

C:\Techno\Java\bin (Path)
C:\Techno\Java (JAVA_HOME)
C:\Techno\JBoss (JBOSS_HOME)

Não há CLASSPATH configurado devido as razões citadas na minha última mensagem.
Como já foi dito eu uso:

Eclipse 3.0 com Lomboz 3.0rc2 (também está instalado o Plugin Cheetah para o SDK 1.5, porém estou usando o SDK 1.4.2)

JBoss 3.2.3 (e pelo que consta, o Tomcat 4.1)

O index.html no qual utilizo para ?chamar? o servlet encontra-se no projeto Servlets, modulo httpServlet. O servlet.class a ser executado encontra-se no mesmo projeto(Servlets), subpasta WEB-INF/classes (tudo isso dentro do Workspace).

Os exemplos abaixo são bastante simples justamente para descartar a hipótese de erro no código.

<html>
<head>
<title>Servlets</title>
</head>
<body bgcolor="#FFFFFF">

&lt;form name = "form1" action = "Servlet.java" method = "GET"&gt;
&lt;h1&gt;Testando Servlets Java&lt;/h1&gt;&lt;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nome:&lt;input type = "text" name = "nome"&gt;
	  &lt;input type = "submit" value = "Enviar"&gt;
&lt;/form&gt;

</body>
</html>

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

public class Servlet extends HttpServlet
{
public void service(HttpServletRequest req, HttpServletResponse res)
{

    try 
    {
        String nome = req.getParameter("nome");
        PrintWriter out = res.getWriter();
        res.setContentType("text/html");
        out.println("&lt;html&gt;");
        out.println("&lt;body&gt;");
        out.println("&lt;head&gt;&lt;title&gt;Testando Servlets&lt;/title&gt;&lt;/head&gt;");
        out.println("&lt;h1&gt;Servlet Executando&lt;/h1&gt;");
        out.println("&lt;p&gt;&lt;blockquote&gt;");
        out.println("Nome: " + req.getParameter("nome"));
        out.println("&lt;/body&gt;");
        out.println("&lt;/html&gt;");
        out.close();
    }
    catch (IOException e) 
    {
        e.printStackTrace();
    }
    
    
}

}

Agora um fato interessante: ao abrir o arquivo ?web.xml? para postar para o fórum do Portal Java, veja a ?inédita e indigesta? mensagem que eu recebi…

A página XML não pode ser exibida
Não é possível exibir a entrada XML usando a folha de estilos . Corrija o erro e clique no botão Atualizar ou tente novamente mais tarde.
O sistema não pode localizar o recurso especificado. Erro ao processar o recurso ‘http://java.sun.com/dtd/web-app_2_3.dtd’.

Entrei na Internet para baixá-lo, mas o problema persiste. Pelo que sei, não há necessidade de configurar o ?web.xml? no JBoss, no entanto a fonte que me deu essa informação não era muito ?segura?(!!!)

Acho que por ora era ?SÓ? isso …rs…se puder me ajudar, ficaria muito grato. E, caso eu possa ajudar alguém de alguma forma, estou à disposição!!!

Abraço

P.S.: caso seja constatado que os problemas são relacionados a configuração, peço desculpas pelo fato desta mensagem estar postada no item ?Servlets/JSP?. Se for possível movê-la para o item ?Configurações?, apenas me informem como fazê-lo.

FALHA NOSSA!!!

 Só uma observação no código HTML: o action correto é 
   
       " action = "Servlet.class" e não "Servlet.java". 

Copiei errado ao postar a mensagem......

Estou com um problema muito parecido…
Mas estou usando o somente o Tomcat como servidor de aplicação…

também criei um servlet bem simples como o exemplo, mas quando chamo pelo browser aparece a tela de erro.

verifiquei o arquivo esta no diretório “tomcat_home\webapps\teste\WEB-INF\classes\teste”

Existe algum tutorial que aborde melhor a utilização do Lomboz ???

Obrigado,

[quote=“Adam”]Não há CLASSPATH configurado devido as razões citadas na minha última mensagem.
[/quote]

cara, eu nunca ouvi falar disso… na dúvida, sete teu CLASSPATH… não custa nd… hehe, e tb nunca ouvi essa de não precisar de web.xml :???: , hahahaha, só falta alguma das tuas fontes dizer q não precisa do SDK tb pra compilar… ai eu me demito… haeheahae, brincadeira, bem, mas o erro ja vi de cara:

&lt;form name = &quot;form1&quot; action = &quot;Servlet.java&quot; method = &quot;GET&quot;&gt;

tire o “.java” do nome do teu servle… ahm, e sobre o web.xml, tente postar somente o conteudo entre as tags <web-app></web-app>

sim, http://www.objectlearn.com/support/docs/index.jsp , normalmente, o erro sempre esta no web.xml, no caso do lomboz, qnd tu cria um novo servlet atravéz do wizard, ele te pergunta oq quer colocar no web.xml, se tu fornecer os dados corretos, e chamar com o mesmo nome q setou na <url-pattern> no teu browser, não tem erro, mas qualquer coisa, pode postar o teu web.xml ai q a gente da um jeito :slight_smile:

Mais uma vez obrigado Matheus!!!

Mas apenas duas observações: o erro “Servlet.java” foi apenas ao copiar aqui no Portal. Na minha aplicação é “Servlet.class”. Inclusive eu me retratei do erro logo após (é so dar uma olhadinha logo acima).

Quanto às minhas fontes “seguras”, o que essa me disse não era que não precisava do web.xml, e sim de que ’ no JBoss não havia a necessidade de configurá-lo como no Tomcat’. Eis aí a minha dúvida!!!

E quanto ao próprio web.xml, mesmo depois de ter reinstalado o JBoss, o maldito do arquivo continua exibindo a mensagem descrita na minha mensagem anterior. Mas para não ficar abusando da sua boa vontade, me informe uma coisa: onde “EXATAMENTE” fica o Tomcat dentro do JBoss??? O web.xml que vc se refere está dentro desta pasta, não está???

Abraço…ah, e parabéns pela ajuda que vc tem não apenas a mim, mas à toda comunidade do Portal Java!!!

[quote=“Adam”]Mas apenas duas observações: o erro “Servlet.java” foi apenas ao copiar aqui no Portal. Na minha aplicação é “Servlet.class”.
[/quote]

bem, tire o “.class” tb, deixe só o nome do teu servlet, como esta em <url-pattern> no web.xml (se tu não tens, vamos fazer um)

ah a necessidade sim, a diferença é q no tomcat tu coloca tua aplicação em /webapps, e no JBoss é em /server/default/deploy

o Tomcat esta integrado ao JBoss, como eu disse, tu nem tem q se preocupar com isso, imagine o JBoss como sendo teu servidor web tb, tu vai colocar tua aplicação no diretorio /deploy do JBoss, e tua aplicação terá um web.xml na pasta WEB-INF como qualquer outro sistema rodando em Tomcat

[quote=“Adam”]
Abraço…ah, e parabéns pela ajuda que vc tem não apenas a mim, mas à toda comunidade do Portal Java!!![/quote]
q isso cara, eu fico com vergonha… heheheheah :lol:

finalizando, se tu tiver problemas em fazer o teu web.xml, posta ai q é muito simples…

Olha Matheus, o web.xml que está na pasta Tomcat:

[code]<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE web-app (View Source for full doctype…)>

  • <web-app>

  • <servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

  • <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
    </init-param>

  • <init-param>
    <param-name>listings</param-name>
    <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>

  • <servlet>
    <servlet-name>invoker</servlet-name>
    <servlet-class>org.apache.catalina.servlets.InvokerServlet</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>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

  • <init-param>
    <param-name>logVerbosityLevel</param-name>
    <param-value>WARNING</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
    </servlet>
    <servlet>
    <servlet-name>ssi</servlet-name>
    <servlet-class>
    org.apache.catalina.ssi.SSIServlet
    </servlet-class>
    <init-param>
    <param-name>buffered</param-name>
    <param-value>1</param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
    </init-param>
    <init-param>
    <param-name>expires</param-name>
    <param-value>666</param-value>
    </init-param>
    <init-param>
    <param-name>isVirtualWebappRelative</param-name>
    <param-value>0</param-value>
    </init-param>
    <load-on-startup>4</load-on-startup>
    </servlet>

    <servlet>
    <servlet-name>cgi</servlet-name>
    <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
    <init-param>
    <param-name>clientInputTimeout</param-name>
    <param-value>100</param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>6</param-value>
    </init-param>
    <init-param>
    <param-name>cgiPathPrefix</param-name>
    <param-value>WEB-INF/cgi</param-value>
    </init-param>
    <load-on-startup>5</load-on-startup>
    </servlet>

  • <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>

  • <servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>.jsp</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>ssi</servlet-name>
    <url-pattern>
    .shtml</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
    <servlet-name>cgi</servlet-name>
    <url-pattern>/cgi-bin/*</url-pattern>
    </servlet-mapping>

  • <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    </web-app>[/code]

[color=“green”][size=“11”]Utilize a tag CODE em seus códigos, facilita a identação do mesmo - matheus[/size][/color]

tu tem um url-pattern pra “Servlet” no teu action=“Servlet”, e não esta mapiado pra essa string, bem… tu ta usando tudo oq ta definido nesse web.xml? olha só, ai vai o exemplo mais básico de web.xml:

&lt;web-app&gt; &lt;servlet&gt; &lt;servlet-name&gt;meuServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;meu.pacote.MeuServlet&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;meuServlet&lt;/servlet-name&gt; &lt;url-pattern&gt;meuServlet&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;/web-app&gt;

feito isso, tu chama no browser:

http://localhost:8080/NomeDaAplicacao/meuServlet

Achei o problema: não há nada de errado com o ‘web.xml’. Após quase ‘rachar’ o Eclipse ao meio, descobri que a biblioteca javax.servlet estava corrompida. Como??? Não sei…rs…Tentei, contudo, apenas reinstalar a biblioteca, mas não obtive sucesso. O jeito foi reinstalar o próprio Eclipse. E finalmente os servlets foram executados!!!

  UFA......deu um trabalhão!!! Não sou muito a favor desta política de "reinstala prá ver se funciona!", mas hoje devo admitir que deu certo.....rs.....

    Se alguém quiser tiver algum problema parecido é só postar a dúvida aqui neste tópico mesmo...talvez eu possa ajudar!!!

   Só para adiantar: qualquer problema desta natureza, tentem antes de mais nada, verificar em WINDOWS>Preferences>Lomboz>Server definitions, se todas a Lib estão OK. No meu caso, havia um pequeno ícone de erro ao lado de javax.servlet.jar.

    É isso aí!!!! Agradeço a atenção do Portal!!! (Valeu Matheus!)