Web.xml

HELP!!

Estou utilizando o Tomcat 5.0 e estou tendo um erro no deployment das minhas classes.

web.xml - file

<servlet>
        <servlet-name>Cliente</servlet-name>
        <servlet-class>Cliente</servlet-class>
        <servlet-mapping>
                   <url-pattern>/gravacao/servlet/Cliente</url-pattern>
        </servlet-mapping>
</servlet>

Eu declaro a classe desta forma e chamo por meio de um form a classe assim:

<form action="/gravacao/servlet/Cliente" method="Post">

Ele me retorna que a página não foi encontrada, deve ser algo bem simples, mas que está me dando muita dor de cabeça. :oops:

Obrigado pela atenção.
Bruno Henrique.

O seu mapping está no lugar errado. Ele deveria ter sido feito assim:

<servlet> 
        <servlet-name>Cliente</servlet-name> 
        <servlet-class>Cliente</servlet-class> 
</servlet> 
...
<servlet-mapping> 
        <url-pattern>/gravacao/servlet/Cliente</url-pattern> 
</servlet-mapping> 

Seria bom tambem colocar sua classe num pacote. Se já estiver, quando for indicar o nome da classe, coloque o nome completo dela. Tipo: pacote.servlet.Cliente

Uma leitura rapida sobre o web.xml:
http://www.javafree.com.br/forum/viewtopic.php?t=1412

Até.

tenta assim:

<servlet>
        <servlet-name>Cliente</servlet-name>
        <servlet-class>sera.que.naotem.pacote.Cliente</servlet-class>
</servlet> 
<servlet-mapping>
	<servlet-name>Cliente</servlet-name>
	<url-pattern>/gravacao/servlet/Cliente</url-pattern>
</servlet-mapping>

nao esquece de trocar o sera.que.naotem.pacote.Cliente pelo nome da tua classe (incluindo.o.nome.do.pacote) :slight_smile:

Opa. não tinha visto que já tinha sido respondida. De qq forma, acho que precisa do <servlet-name> dentro do url-mapping, não?

Pessoal, ainda não estou conseguindo rodar minha aplicação, alguem tem alguma sugestão?

Meu web.xml - file está assim:

&lt;web-app&gt;
	&lt;servlet&gt;
	        &lt;servlet-name&gt;Cliente&lt;/servlet-name&gt;
	        &lt;servlet-class&gt;Cliente&lt;/servlet-class&gt;
	&lt;/servlet&gt;	
	
	&lt;servlet-mapping&gt;
	        &lt;servlet-name&gt;Cliente&lt;/servlet-name&gt; 
                        &lt;url-pattern&gt;/gravacao/servlet/Cliente&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;
&lt;/web-app&gt;

Continuo chamado o servlet por:

&lt;form action=&quot;/gravacao/servlet/Cliente&quot; method=&quot;Post&quot;&gt;

Minha classe Cliente esta na pasta c:/tomcat5/webapps/gravacao/WEB-INF/classes/Cliente.class

Eu entro com o index.htm, que está dentro da pasta gravacao, então http://localhost:8080/gravacao/index.htm

Até aí ele roda normal, o problema é quando ele chama o Cliente por “/gravacao/servlet/Cliente” ele dá erro de “pagina não pode ser encontrada”.

Alguêm teria alguma idéa?

Obrigado pela atenção.
Bruno Henrique.

Precisa. É o mal de copiar e colar. :?

Tenta colocar a sua classe dentro de um pacote. Verifique tambem se as outras partes do seu web.xml estão bem formadas, ou seja, tente valida-lo. Se não estiver valido, o mapeamento vai pras cucuias. Seria bom mudar essa url-pattern para algo mais simples. Parece que está rolando um certo conflito com ele e o nome da aplicação. Faça algo como:

&lt;servlet-mapping&gt; &lt;servlet-name&gt;Cliente&lt;/servlet-name&gt; &lt;url-pattern&gt;ServletCliente&lt;/url-pattern&gt; &lt;/servlet-mapping&gt;
E na hora de acessar:

&lt;form action=&quot;ServletCliente&quot; method=&quot;Post&quot;&gt;

Se ainda assim der errado, dá uma procurada no forum por invoker.

Até.

:smiley: BLZ! vou tentar aqui.
Valew brother, estou tentando não copiar e colar :P.
Abs.
Bruno Henrique.

Eu nao posso acreditar que depois de tanto post nessa thread ninguem te pediu pra olhar os logs do tomcat! :smiley:

Nao tem nenhuma mensagem de erro na inicializacao da tua aplicacao la? :wink:

Se o nome do seu contexto é “gravacao” voce deveria mapear da seguinte forma:

  &lt;servlet-mapping&gt; 
    &lt;servlet-name&gt;Cliente&lt;/servlet-name&gt; 
    &lt;url-pattern&gt;/servlet/Cliente&lt;/url-pattern&gt; 
  &lt;/servlet-mapping&gt; 

iniciando direto em /servlet/Cliente, senão você terá que chamar a servlet assim:

&lt;form action=&quot;/gravacao/gravacao/servlet/Cliente&quot; method=&quot;Post&quot;&gt; 

digitando gravacao 2 vezes já que a primeira é o nome do contexto.

Aqui em casa com o Tomcat 5 só funcionou com gravacao duas vezes. Mas é bom você olhar o log pra ver se não tem erro no web.xml.

CV, o arquivo de log do tomcat não gera erro algum, passa numa boa. vc acham que deve ter algo a ver com a configuração do invoker sevlet/*? Ou eu estou viajando. :roll:

dsiviotti, mesmo com este código, eu não estou conseguindo, deve ser algo muito banal que eu tenha esquecido ou algo, valew mesmo assim.

Estou tentando aqui… ontem eu quase mudei de área de atuação, estava pensando em medicina :shock: , passaporte direto para o hospício! :smiley:

Valew pela força, continuarei tentando.
Bruno Henrique.

Já que o erro deve ser banal…

Você está implementando o método “doPost”? Seu html chama a servlet por “Post”. (isso não daria erro de página não encontrada, mas…)

Se estiver usando Internet Explorer feche a janela e abra outra, pois o IE às vezes fica com a página em cache. Você pode ter corrigido o erro chamou a Servlet e nem ficou sabendo.

No seu lugar eu faria uma Servlet HelloWorld e aos poucos ia colocando as funcionalidades/configurações do web.xml até verificar onde não funciona. Elimina vários possíveis erros. Talvez até criaria outro contexto.

Manda o código do web.xml inteiro se possível, acho que o erro pode estar lá.

&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot;?&gt;
&lt;web-app&gt;
    &lt;servlet-mapping&gt;
        &lt;servlet-name&gt;invoker&lt;/servlet-name&gt;
        &lt;url-pattern&gt;/servlet/*&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;	
	&lt;servlet&gt;
		&lt;servlet-name&gt;callCliente&lt;/servlet-name&gt;
		&lt;servlet-class&gt;view.servletCliente&lt;/servlet-class&gt;
		&lt;load-on-startup&gt;1&lt;/load-on-startup&gt; 
	&lt;/servlet&gt;	
	&lt;servlet-mapping&gt;
		&lt;servlet-name&gt;callCliente&lt;/servlet-name&gt; 
		&lt;url-pattern&gt;/view/servletCliente&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;
    &lt;session-config&gt; 
        &lt;session-timeout&gt;30&lt;/session-timeout&gt; 
    &lt;/session-config&gt; 
    &lt;welcome-file-list&gt; 
        &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt;
    &lt;/welcome-file-list&gt; 
&lt;/web-app&gt;

  &lt;form action=&quot;servlet/callCliente&quot; method=&quot;Post&quot;&gt;

ERRO:

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error &#40;&#41; that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException&#58; Cannot allocate servlet instance for path /gravacao/servlet/callCliente
	org.apache.catalina.servlets.InvokerServlet.serveRequest&#40;InvokerServlet.java&#58;435&#41;
	org.apache.catalina.servlets.InvokerServlet.doPost&#40;InvokerServlet.java&#58;216&#41;
	javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;763&#41;
	javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;856&#41;


root cause 

java.lang.StackOverflowError


note The full stack trace of the root cause is available in the Tomcat logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.14

Bom, é isso ae, o Servlet Cliente está em WEB-INF/classes/view/servletCliente.class

Eu não consigo ver o porque não funciona, espero que possam me ajudar.

Bruno Henrique.

Pergunta besta: você declarou o package da sua classe assim né

package view;

Correto! :slight_smile:

E acabei de desinstalar o Tomcat 5 e instalei o 4, o mesmo erro ocorre, alguem consegue ver o que estou fazendo de errado?

Valew pelo help.
Bruno Henrique.