Web.xml

12 respostas
Bruno_Henrique

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.

12 Respostas

cancao

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é.

om1

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?

Bruno_Henrique

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="/gravacao/servlet/Cliente" method="Post"&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.

cancao

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="ServletCliente" method="Post"&gt;

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

Até.

Bruno_Henrique

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

cv1

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:

dsiviotti

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="/gravacao/gravacao/servlet/Cliente" method="Post"&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.

Bruno_Henrique

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.

dsiviotti

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á.

Bruno_Henrique
&lt;?xml version="1.0" encoding="iso-8859-1"?&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="servlet/callCliente" method="Post"&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.

_fs

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

package view;
Bruno_Henrique

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.

Criado 10 de fevereiro de 2004
Ultima resposta 12 de fev. de 2004
Respostas 12
Participantes 6