Obter informações do web.xml

Olá,

Eu quero colocar uma tag dentro do web.xml, por exemplo:

<nomedodatasource>bancoWeb</nomedodatasource>

tem alguma de colocar isso e depois recuperar o valor em um classe?!

Tu pode usar como um init-param para um servlet em especifico ou um context-param para a aplicação toda.

ah! blz!

mas como faço pra obter esse valor em uma classe comum.
não é um servlet, é uma classe DAO, por exemplo. :???:

valeu!

Nesse caso, acho que você podia fazer um ServletContextListener, que vai chamar o método contextInitialized, quando a aplicação começar.

Daí você pega o valor do context-param do web.xml, e cria a conexão com o banco, e fecha a conexão no método contextDestroyed.

eh… valeu pela ajuda.

Bem, vou tentar explicar porque eu quero recuperar informações do web.xml.

Trabalho com o JDeveloper 10, montei um arquivo properties com alguns parametros de controle do sistema, por exemplo: conexão com o banco de dados.

Coloquei o arquivo em:

Quando vou rodar a aplicação não encontra o arquivo de jeito nenhum!
Ao colocar um caminho absoluto - D:\proj\conf.properties - daí sim tudo funciona, ou seja, inútil e quando eu gerar o WAR?!

será que agora eu consigo resolver isso hehehe!
valeuzão!

Cara,
É assim:

ServletContextEvent  event
event.getServletContext&#40;&#41;.getInitParameter&#40;&quot;PARAMETRO WEB&gt;XML&quot;&#41;;

Anderson, eu não estou trabalhando com servlets, veja:
Essa é a classe que carrega o properties.

package br.senac.sp.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.PropertyResourceBundle;
public class Parametros 
&#123;
  private static Properties propriedade;
  private static File arquivo;
  private static String path = &quot;/WEB-INF/classes/datasource.properties&quot;;

  /*
   * carrega o arquivo de propriedades
   * */
  static&#123;

    try  &#123;
      arquivo = new File&#40; path &#41;;  
      propriedade = new Properties&#40;&#41;;
      propriedade.load&#40; new FileInputStream&#40;arquivo&#41; &#41;;

    &#125;catch&#40;IOException ei&#41;&#123;
      System.out.println&#40; &quot;Erro&#58; &quot; + ei.getMessage&#40;&#41; &#41;;
    &#125;catch&#40;Exception ex&#41;  &#123;
      System.out.println&#40; &quot;Erro&#58; &quot; + ex.getMessage&#40;&#41; &#41;;
    &#125;
  &#125;
  
  /**
   * 
   * @param parametro
   * @return valor
   */
  public static String getValor&#40;String parametro&#41;&#123;
    String retorno = null;
    try&#123;
      retorno = propriedade.getProperty&#40;parametro&#41;;
    &#125;catch &#40;Exception ex&#41;&#123;
      System.out.println&#40; &quot;Erro&#58; &quot; + ex.getMessage&#40;&#41; &#41;;
      System.out.println&#40;&quot;\nprintStackTrace&#58; &quot;&#41;;
      ex.printStackTrace&#40;&#41;;
    &#125;
    return retorno;
  &#125;//

&#125;

esse é um exemplo de como eu a utilizaria:

Transacao transacao   = new Transacao&#40;Parametros.getValor&#40;&quot;dsname&quot;&#41;&#41;;  

entendeu?!

Então seu proplema é que vc nao ta conseguindo ler o arquivo .propries de dentro da sua aplicação???
Tenta colocar ele no mesmo nivel da classe DAO!

Após algumas pesquisas em forúns e ajuda da minha equipe, consegui chegar a isso:

public class Parametros extends java.util.Properties &#123;

   /**

    * Construtor

    * @param String - path e nome do arquivo de propriedades

    */

   public Parametros&#40;String arquivo&#41; &#123;

      super&#40;&#41;;

      try&#123;
         this.load&#40;getClass&#40;&#41;.getClassLoader&#40;&#41;.getResourceAsStream&#40;arquivo&#41;&#41;;

      &#125;catch&#40;Exception e&#41;&#123;&#125;

   &#125;

&#125;

Funciona perfeitamente, basta o arquivo estar em WEB-INF/classes/ que será localizado.

Mas vejam se o meu raciocinio está errado.
Tenho 5 páginas jsp que fazem conexão com o banco, logo utilizarão o Dao que por sua vez a classe de Property, sendo assim, o arquivo será carregado 5 vezes.

Eu tentei montar essa funcionalidade dentro de um bloco static, para que seja carregado na jvm uma única vez, mas não consegui… :???: pois this.getClass não é estático.

capiche? alguma idéia?! ops! devo abrir um novo tópico? 8O

valeuzão!

Tu pode user um singleton.

Show!!
Poxa não conhecia esse Pattern, muito obrigado a todos, essa é a classe final:

package br.senac.sp.util;
import java.util.Properties;

public class PropertyServer extends Properties  &#123;
  private static String arquivo = &quot;datasource.properties&quot;;
  private static PropertyServer instancia;
  
  private PropertyServer&#40;&#41;&#123;
    try&#123;
       instancia.load&#40; getClass&#40;&#41;.getClassLoader&#40;&#41;.getResourceAsStream&#40;arquivo&#41; &#41;;
    &#125;catch&#40;Exception e&#41;&#123;
      System.out.println&#40;&quot;&quot;&#41;;
    &#125;
  &#125;
  
  public static PropertyServer getInstance&#40;&#41;&#123;
    if&#40; instancia == null &#41;
      instancia = new PropertyServer&#40;&#41;;

    return instancia;
  &#125;
&#125;