Como ler o web.xml de um WebApp

Para WebApps, o web.xml pode ser usado para armazenar as configurações do aplicativo. Como posso ler este arquivo? Meus servlets são executados em um servidor GlassFish v2.

Não tenho certeza se entendi completamente essa questão …

Assumindo que seu Servlet estenda o HttpServlet ?

HttpServlet implementa o ServletConfig , para que você possa descobrir os parâmetros específicos do servlet usando:

Em web.xml

  com.acme.Foo  my.init.param 10   

No servlet:

 int x = Integer.parseInt(getInitParameter("my.init.param")); 

Da mesma forma, você pode obter configurações globais (em todo o contexto) usando:

  my.context.param Hello World  

No servlet:

 String s = getServletContext.getInitParameter("my.context.param"); 

É claro que, se você estiver usando uma estrutura junto com seus servlets, como o Spring, poderá usar os arquivos de configuração do Spring para injetar configurações em suas classs de aplicativo da web.

Adicione um init-param:

  InitParam init param value  

Em seguida, leia-o a partir do código java (dentro de um servlet):

 String initParam = getServletConfig().getInitParameter("InitParam"); 

Doekman, é possível explicar por que você quer ler o arquivo web.xml? As configurações nesse arquivo são direcionadas para o WebContainer. Se você quiser passar parâmetros de configuração para serem carregados pelo seu aplicativo, basta usar os parameters de Contexto:

O elemento context-param opcional declara os parâmetros de boot de contexto de servlet de um Aplicativo da Web. Você define cada parâmetro de contexto dentro de um único elemento de parâmetro de contexto, usando e elementos. Você pode acessar esses parâmetros em seu código usando os methods javax.servlet.ServletContext.getInitParameter () e javax.servlet.ServletContext.getInitParameterNames ().

Se você realmente precisa ler o arquivo, eu tenho certeza que você pode tentar carregar o arquivo usando o Java IO. A única coisa que você precisa saber é o caminho de trabalho usado pelo Glassfish quando seu aplicativo está em execução. Você poderia tentar algo parecido com isto System.getProperty (“user.dir”);

De lá, você pode carregar o arquivo usando um caminho relativo. Exemplos em http://www.exampledepot.com .

A escolha do contêiner não deve ser relevante para essa questão, pois cada contêiner deve implementar a especificação do contêiner do servlet , seja Tomcat, Glassfish ou um dos muitos outros .