Tomcat URGENTE: Taglibs no WEB.XML e localização de aqruivos

3 respostas
Rafael_Afonso

Olá:

Em meu aplicativo web tenho o seguinte arquivo web.xml:

<web-app>
    <servlet>
        <servlet-name>BomiServlet</servlet-name>
        <servlet-class>bomi.servlet.BomiServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>BomiServlet</servlet-name> 
        <url-pattern>/bomi</url-pattern> 
    </servlet-mapping>
    
    <taglib>
    <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/c.tld</taglib-location>
    </taglib>
</web-app>

Pois bem, quando tento acessar o aplicativo digitando http://localhost:8080/bomi/bomi, obtenho a seguinte mensagem do Tomcat:

Somente quando comento a parte do Taglib, o servlet funciona! Alguém pode me explicar o que significa isso! Isso está me enlouquecendo! :twisted:

Em meu aplicativo web tenho a seguinte distribuição de diretórios dentro do diretório webapps do Tomcat):

bomi/
bomi/META_INF/
bomi/WEB-INF/
bomi/WEB-INF/classes/
bomi/WEB-INF/lib/
bomi/WEB-INF/tld/

Em uma classe minha chamo um arquivo *.properties assim:

props.load(new FileInputStream("conf/hibernate.intec.properties"));

Coloquei o diretório conf em bomi/WEB-INF/. Entretanto quando tento acessar minha aplicação (com a mesma url acima) aparece uma mensagem de FileNotFound dizendo que não achou o arquivo de propriedades. Tontei jogar o diretório conf dentro de bomi/ (O raiz da aplicação), bomi/WEB-INF/classes/, mas não consegui nada. O que devo fazer?

Aguardo uma resposta o mais rápido possível, por favor.

Grato,

3 Respostas

Rafael_Afonso

A questão dos taglibs foi resolvida. No web.xml eu tinha escrito:

<taglib> 
   <taglib-uri>http://java.sun.com/jstl/core</taglib-uri> 
   <taglib-location>/WEB-INF/c.tld</taglib-location> 
</taglib>

Quando o correto seria:

<taglib> 
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri> 
<taglib-location>/WEB-INF/tld/c.tld</taglib-location> 
</taglib>

Escrevi de “dizer” ao Tomcat que o TLD estava no diretório tld.
Agora falta resolver a questão da leitura dos arquivo de property.

Grato,

caiofilipini

“Rafael Afonso”:
Em uma classe minha chamo um arquivo *.properties assim:

props.load(new FileInputStream("conf/hibernate.intec.properties"));

Coloquei o diretório conf em bomi/WEB-INF/. Entretanto quando tento acessar minha aplicação (com a mesma url acima) aparece uma mensagem de FileNotFound dizendo que não achou o arquivo de propriedades. Tontei jogar o diretório conf dentro de bomi/ (O raiz da aplicação), bomi/WEB-INF/classes/, mas não consegui nada. O que devo fazer?

Coloque o diretório conf na raiz do contexto:

/bomi/conf

Depois carregue o arquivo dessa maneira:

props.load(getServletContext().getResourceAsStream("/conf/hibernate.intec.properties"));

Aqui esse código funciona normalmente. :smiley:

[]'s

Rafael_Afonso

Caio:

A solução que acabei adotando (e que não me agradou muito) foi perto do que você sugeriu. Criei um Singleton chamado Contexto. No web.xml uso um <context-param> contendo a localização do arquivo. No init() do servlet passo faço um conf.getServletContext().getInitParameter() para pagar o tal valor e passo para Contexto. No DAO onde vou precisar da informação simplemente pego o local do arquivo a aprtir de Contexto.
Para mais detalhes veja aqui. Mais para frente pensarei melhor nesta questão, talvez adotando sua sugestão.
Obrigado de qualquer forma. :wink:

Criado 1 de outubro de 2003
Ultima resposta 1 de out. de 2003
Respostas 3
Participantes 2