Tomcat duvidas

10 respostas
E

Mais uma vez dou um grito de desespero , e desta vez é graças ao Tomcat 4.1.34.

Pessoal a questão é a seguinte eu não consigo correr os meus servlets a partir do diretório criado por mim , o browser sempre dá o seguinte erro description: The requested resource (/meusServlets/servlet/HelloServlet) is not available.

Eu adicionei a seguinte linha de códico no file server.xml <Context path="/meusServlets" docBase=“meusServlets” debug=“0” reloadable=“true” />
Já setei todas as variavéis (JAVA_HOME,CLASSPATH etc) mas ele continua a dar o mesmo erro.
Será que o erro está no web.xml file ? O que é que eu devo colocar nesse file ? Alguém tem um exemplar para mim ?
Eu já li o tutorial do Tomcat do GUJ mas não me ajudou lá muito, será que alguém pode me ajudar ?

10 Respostas

manoel

Você já tentou colocar no Context path a url inteira…

onde está o endereço completo do projeto.

otaviofcs

Posta seu web.xml porque no server.xml você só definiu a capacidade de dar o reload. Você tem que mapear o objeto para acessa-lo, tipo assim:

&lt?xml version=“1.0” encoding=“ISO-8859-1”?&gt

<!DOCTYPE web-app

PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”

“<a href="http://java.sun.com/dtd/web-app_2_3.dtd">http://java.sun.com/dtd/web-app_2_3.dtd</a>”>

<web-app>

<display-name>minha_aplicacao</display-name>

<description>minha aplicacao</description>

<servlet>

<servlet-name>login</servlet-name>			<display-name>login</display-name>		<description>login</description>		<servlet-class>meu.pacote.login</servlet-class>

</servlet>

<servlet-mapping><servlet-name>login</servlet-name>

<url-pattern>/login</url-pattern>

</servlet-mapping>

</web-app>

E passo acessar por:

http://endereco:porta/minha_aplicacao/login

abraços,

otávio

E

Este é o web.xml file da aplicação HelloServlet:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!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>HelloServlet</servlet-name> 
        <servlet-class>HelloServlet</servlet-class> 
    </servlet> 

    
    <servlet-mapping> 
        <servlet-name>HelloServlet</servlet-name> 
        <url-pattern>/servlet/</url-pattern> 
    </servlet-mapping> 

    <session-config> 
        <session-timeout>30</session-timeout> <!-- 30 minutes --> 
    </session-config> 

</web-app>

Eu uso o Java 5

Obrigado

cassio

O endereço que vc tem que digitar pra acessar seu servlet é o que está na tag <url-pattern>, na seção <servlet-mapping> do seu web-xml.

Vc colocou

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

Logo deveria acessar usando

http://localhost:8080/suaaplicacao/servlet/

E

Assim não funcionou ,eu tentei o seguinte : “localhost/meusServlets/servlet/HelloServlet”, e deu certo, só que agora surgiram mais dois fenómenos que gostaria que me ajudassem a entender.

1- Quando eu mudo a url-pattern de “/servlet/” para (por exemplo) “/ehb/” não consigo acessar a aplicação, mesmo mudando de “servlet” para “ehb” na url (localhost/meusServlets/ehb/HelloServlet).Mas se eu colocar “servlet” na url (localhost/meusServlets/servlet/HelloServlet ) ele encontra a aplicação , mesmo que a pattern seja “/ehb/” e não “/servlet/”.

2- Eu adiciono mais classes ao meu WEB-INF/classes directório e consigo executa-las pelo meu browser sem referenciar essas aplicações no meu web.xml ficheiro, a que se deve isto ?

Obrigado pela atenção.

otaviofcs

Tem algo estranho. Não lembro se a versão 4.1 do tomcat funciona assim, mas acho que não, pelo menos por default, não sei se tem configuração que libere o acesso direto. A pasta WEB-INF/classes existe para que, justamente, pessoas externas não tenham acesso direto a suas classes.

A sua classe HelloServlet tá no pacote servlet por acaso?

Anexa seu web.xml pra gente olhar. Tem algo que não fecha…

E

Não, esta é a path da pasta : C:\tomcat\apache-tomcat-4.1.34-LE-jdk14\webapps\meusServlets\WEB-INF\classes

Qual web.xml , o que vem na pasta conf do Tomcat ou aquele que està na pasta WEB-INF (já postado) da minha aplicação ?

Já agora mais uma coisa , é que eu apaguei o web.xml para a minha aplicação mas eu consigo executar o meus servlets, já criei outras pastas (com WEB-INF \classes) e consigo executar os servlets mesmo sem o web.xml file.

E

Descobri qual era a causa do problema , eu havia activado o invoker servlet no conf/web.xml, está tudo OK (por enquanto).

Só mais uma perguntinha meus caros irmãos , qual é a função do elemento [color=green][/color]url-pattern ? Porquê que temos que definir um padrão ?

Obrigado pela vossa paciência.

otaviofcs

Que bom q vc viu o conf

Vamos tentar:

url-mapping é um padrão de url que será associado à um determinado servlet. No caso você estava associando o caminho http://servidor:porta/aplicacao/servlet/ para HelloServlet

Você poderia ter colocado ao invés de /servlet/ /servlet/*.aplic e aí toda vez que digitassem

http://servidor:porta/aplicacao/servlet/teste.aplic
http://servidor:porta/aplicacao/servlet/login.aplic

o HelloServlet seria chamado para tratar a solicitação.

se quiser ir mais a fundo, tem uma descrição mais profunda/correta aqui:

http://edocs.bea.com/wls/docs90/webapp/configureservlet.html

Ajudou?

E

O-B-R-I-G-A-D-Ã-O. :smiley:

Criado 11 de janeiro de 2007
Ultima resposta 15 de jan. de 2007
Respostas 10
Participantes 4