Dúvida com web.xml, decritor de aplicação

7 respostas
duardor

Ae galera, seguinte:

Eu estoiu usando o tomcat a ultima versão se nao me engano a 4.1.18

Eu crio o diretotio da minha aplicação myApp e dentro dele o WEB-INF
no WEB-INF coloco o meu descritor web.xml
Ainda dentro do WEB-INF tenho o diretorio classes.
Dentro dele coloco minha classe q extende HttpServlet testeServlet.class
Ela simplesmente vai retornar ao browser ‘Hello’

Agora darei dois arquivos web.xml:

Arquivo 1:

<web-app>
  <servlet>
    <servlet-name>Teste</servlet-name>
    <servlet-class>testeServlet</servlet-class>
  </servlet>
</web-app>

De acordo com este codigo uma desta URLs devia acessar o Servlet corretamente:

http://localhost:8080/myApp/Teste
http://localhost:8080/myApp/testeServlet
http://localhost:8080/myApp/servlet/Teste
http://localhost:8080/myApp/servlet/testeServlet

Mas nenhuma dessas URLs funciona, todas retornam 404.
O que tem de errado?

O segundo arquivo web.xml seria igual ao primeiro com a diferença que iria nmapear o padrao de URL /Teste para meu servlet de name Teste. dai eu acesso meu Servlet do seguinte modo:

http://localhost:8080/myApp/Teste

e ai funciona legal…

Entao para funcionar eu SEMPRE tenho q fazer o mapeamento???
Aguardo respostas…

Valew galera

7 Respostas

douglasfs

Eu também estou utilizando o Tomcat 4.1.18, caso você queira chamar a sua aplicação sem mapear a Servlet (exemplo http://localhost:8080/myApp/servlet/minhaservlet) você precisa adicinar o invoker com o url-pattern /servlet/*. Exemplo abaixo :

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <servlet>
    <servlet-name>minhaservlet</servlet-name>
    <servlet-class>minhaservlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>minhaservlet</servlet-name>
    <url-pattern>/servlet/minhaservlet</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>
            30
        </session-timeout>
  </session-config>
  <welcome-file-list>
    <welcome-file>
            index.jsp
        </welcome-file>
    <welcome-file>
            index.html
        </welcome-file>
    <welcome-file>
            index.htm
        </welcome-file>
  </welcome-file-list>
</web-app>

Caso você tenha mais de uma webapp e você não quer colocar o invoker para cada web.xml , basta você editar o web.xml global(TOMCAT_HOME/conf/web.xml) e procurar a seguinte linha :

<!-- The mapping for the invoker servlet -->
<!--
    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
-->

Perceba que ele está comentado, basta retirar o comentário, salvar e reiniciar o tomcat

duardor

Douglas, oq vc postou funfou legal…
Mas tem como chamar o servlet apenas pelo seu nome?
No caso do meu exemplo

http://localhost/myApp/Teste

sem colocar o /servlet/Teste

Estou perguntando pq possuo um livro que se chama Java para WEB com Servlets, JSP e EJB e o PRIMEIRO exemplo que ele dá no livro ele menciona dessa forma (que se pode chamar o servlet apenas pelo seu nome) e nem faz menção nenhum ao invoker…

Agradeço desde já

T+

Abraços

douglasfs

“duardor”:
Douglas, oq vc postou funfou legal…
Mas tem como chamar o servlet apenas pelo seu nome?
No caso do meu exemplo

http://localhost/myApp/Teste

sem colocar o /servlet/Teste

Estou perguntando pq possuo um livro que se chama Java para WEB com Servlets, JSP e EJB e o PRIMEIRO exemplo que ele dá no livro ele menciona dessa forma (que se pode chamar o servlet apenas pelo seu nome) e nem faz menção nenhum ao invoker…

Agradeço desde já

T+

Abraços

Eu também tenho esse livro :lol: , não acredito que se possa chamar a Servlet http://localhost/myApp/Teste sem utilizar um mapeamento (eu desconheço), vou ver esse primeiro exemplo assim que eu chegar em casa.

Falow

duardor

Ok Douglas
O livro q eu to falando eh um q tem um peixinho na capa…
Verifica ai pra mim
T+

douglasfs

“duardor”:
Ok Douglas
O livro q eu to falando eh um q tem um peixinho na capa…
Verifica ai pra mim
T+

É esse livro mesmo (na minha opinião na parte de EJB deixa a desejar), assim que eu chegar em casa depois do trabalho + faculdade eu verifico para você.

Falow

douglasfs

Eu estive analisando esse livro, e o primeiro exemplo que eu vi sobre Servlets (página 10) é a servlet TestingServlet (nome da classe), mas na página 12 ele diz que você pode chamar um recurso ESTATICO a partir da url http://localhost/myApp/nomedapagina, outra coisa que ele faz é colocar a classe TestingServlet com o servlet-name Testing (página 12) e chama http://localhost/myApp/servlet/Testing, se você não colocasse o servlet-name do descritor você teria que chamar a servlet chamando a partir da classe http://localhost/myApp/servlet/TestingServlet

Seria isso mesmo ? Em qual página que você viu ?, pois eu posso estar enganado

Falow

duardor

Eh esse mesmo Douglas
Mas o livro nao disse nada sobre ativar o invoker no arquivo do Tomcat por isso nao estava dando certo…
Mas valew pela ajuda

Abraços

Criado 21 de abril de 2003
Ultima resposta 24 de abr. de 2003
Respostas 7
Participantes 2