Olá:
O pano de fundo é o seguinte: Na minha classe, para definir o datasource, preciso pegar a definição dele no servidor do JNDI. Esta classe (uma subclasse de Action do Struts) pode rodar tanto em Tomcat 3 quanto em Tomcat 4. No Tomcat 4 posso definir o datasource no módulo de administração e então usar o JNDI. Mas no Tomcat 3 não. Daí tenho que passar as configurações do Banco de Dados por outro método que no momento não importa aqui.
Fiz dessa forma:
try {
Context ctx = new InitialContext();
if (ctx == null) {
throw new RuntimeException("FALHA AO CARREGAR O CONTEXTO!");
}
ds = (DataSource) ctx.lookup("java:comp/env/ras");
} catch (NoInitialContextException ex) {
log.debug("Contexto inexistente");
ds = null;
}catch (NamingException e) {
throw new RuntimeException("FALHA AO OBTER O DATA SOURCE!", e);
}
O que pertuba neste caso é ter que usar uma exceção para o caso de não existir o nome que estou procurando. Tive que usar isso pois não achei nenhum método da API que indica se determinado nome existe ou não. Algo como:
if(ctx.existis("java:comp/env/ras")) {
ds = (DataSource) ctx.lookup("java:comp/env/ras");
} else {
ds = null;
}
Queria saber como poderia fazer isso sem apelar para usar a NoInitialContextException.
Grato,
