Servlet ler arquivo properties

alo pessoal,

tenho uma classe q acessa um banco de dados no mysql essa classe é utilizada por um servlet e as configurações do banco estao em um arquivo properties.

como faço o servlet ler esse arquivo?? :?:
pois esta dando erro:

config.properties (O sistema não pode encontrar o arquivo especificado)

essa classe funciona legal quando usada em uma aplicação local mesmo, mas quando uso em um servlet da esse erro.

onde tenho q colocar o arquivo properties???

ja tentei em varios lugares… :!: :!:

uso o tomcat 4.1.29


Denis

eu salvo as configurações do banco no web.xml, como init-param do servlet controlador, tipo

<servlet> <servlet-name>foo</servlet-name> <servlet-class>Foo</servlet-class> <init-param> <param-name>user</param-name> <param-value>stanley</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>swordfish</param-value> </init-param> </servlet>

…ai, no método init() do servlet, eu recupero assim:

[code]public void init(ServletConfig config)
throws ServletException
{
super.init(config);
config = getServletConfig();

String user = config.getInitParameter( "user" );
String password = config.getInitParameter( "password" );

}[/code]

valeu Matheus,

no meu caso tenho uns 10 servlets…
sei que posso colocar esses parametros iniciais mas o web.xml vai ficar muito grande e com parametros repetidos para cada servlet.
se mudar uma configuração terei q mudar em 10 lugares :?

para evitar isso quero q os servlets utilizem uma classe q tenho q le as configurações de um arquivo properties :wink:

sera q nao tem um jeito de fazer essa classe ler esse arquivo :? :?:


Denis

esses 10 servlets vão ter sempre os mesmos valores pra esses parametros? digo, todos vão ler esses mesmos parametros? se é esse o caso, tu pode definir no web.xml assim:

<web-app> <context-param> <param-name>foo</param-name> <param-value>bar</param-value> </context-param> <servlet> ... </servlet> </web-app>

… com a tag context-param fora de todos os servlets, ai, tu pode pegar o valor via ServletContext:

ServletContext context = getServletContext();

…com o objeto context, tu acessa os parametros…

ai gostei da ideia valeu!! :smiley:

mas ainda acho estranho nao poder ler um arquivo properties, ficava bem melhor.

pq colocando no contexto vou ter que fazer essa leitura ainda no servlet
era melhor fazer na minha classe que acessa banco de dados

em todo caso vou fazer da forma como vc disse valeu


Denis

aqui eu faço assim, no método init() do servlet controlador, eu instancio tudo aquilo q vou precisar na aplicação toda, como por exemplo, o bean q conecta no banco, e pro construtor desse bean eu passo user/password, url, e driver do banco como parametros, todos vindo de web.xml, assim, tenho um lugar central onde posso alterar, caso mude o banco ou usuário :slight_smile:

Vc poderia continuar usando o seu properties tranquilamente. Basta localiza-lo dentro do seu contexto usando o metodo getRealPath.

Colocar parametros dentro do web.xml pode ser interessante em alguns casos, mas em outros não. I18N, por exemplo. :wink:

valeuz…

valeu :smiley:

ja tinha conseguido usando o:

getClass().getResource(arquivo);

concordo q as vezes so um arquivo properties pode resolver…
por exemplo:
gosto de colocar os comandos sqls utilizados na aplicação em um properties… e sem condições de colocar tudo isso no xml :smiley:

value pela dica

Denis