Javax.naming.NameNotFoundException... que erro é esse?

O que significa essa stack?

javax.naming.NameNotFoundException: Name java:comp is not bound in this Context
at org.apache.naming.NamingContext.lookup(NamingContext.java:768)
at org.apache.naming.NamingContext.lookup(NamingContext.java:151)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at util.bdConnection.UtilBDConnection.getDataSourceConnection(Unknown Source)
at graficoModelos.admin.ModelsAdmin.listModels(Unknown Source)
at graficoModelos.constants.ModelsConstants.setModels(Unknown Source)
at graficoModelos.constants.ModelsConstants.run(Unknown Source)
at java.lang.Thread.run(Thread.java:534)
java.lang.NullPointerException
at graficoModelos.admin.ModelsAdmin.listModels(Unknown Source)
at graficoModelos.constants.ModelsConstants.setModels(Unknown Source)
at graficoModelos.constants.ModelsConstants.run(Unknown Source)
at java.lang.Thread.run(Thread.java:534)

Esse erro começou a aparecer a aparecer quando implementei esse código:

public class ModelsConstants implements Runnable {
    
    private static ArrayList models;
    private static Thread updateModels;
    
    static {
        setModels();
        updateModels = new Thread( new ModelsConstants() );
        updateModels.start();
    }
    
    public static void setModels() {
        models = ( new ModelsAdmin() ).listModels();
    }
    
    public static ArrayList getModels() {
        return models;
    }
    
    public void run() {
        try {
            while( true ) {
                
                Thread.sleep( 1800000 );
                setModels();
                
            }
        } catch( Exception e ) {
            e.printStackTrace();
        }
    }
}

Ele eh uma Thread que é executada a cada 30min e atualiza um ArrayList, que é static, com dados do banco de dados.
Estou utilizando esse ArrayList em minha aplicação para montar selects. Esses dados são atualizados durante o dia, por isso pensei em montar essa Thread e utilizar esse ArrayList estático para fazer essa atualização no sistema.

Enfim, porque acontece esse erro? Como eu faço para corrigir esse problema?

cara, o erro não está ai, esta na classe indicada pela exception

at util.bdConnection.UtilBDConnection.getDataSourceConnection(Unknown Source)

ele não encontrou a DataSource que você indicou.

E outra cara, não é muito melhor só atualizar essa classe com os selects nas classes onde dados para ele são realmente inseridos?

Agora estou na facul, mas amanhã vou fazer umas alterações nesse ponto que você indicou.

Esse ArrayList guarda pra mim objetos(bean) que são utilizados para gerar dados e pesquisas na aplicação.

por exemplo:

esse é um exemplo básico de um bean que utilizo…

[code]public class Model {
private String model;
private ArrayList datas;

public void setModel( String model ) { this.model = model; }
public void setDatas( ArrayList datas ) { this.datas = datas; }
public String getModel() { return model; }
public ArrayList getDatas() { return datas; }
}[/code]

Fiz uma classe chamada ModelsConstants(postada anteriormente) que é responsável em servir os dados para minha aplicação. Essa classe manda um pedido para a classe ModelsAdmin que é responsável em pegar os dados no banco de dados e armazenar em um ArrayList de Model(classe acima). Esse ArrayList é retornado para ModelsConstants e armazenado num ArrayList estático que é fornecido para a aplicação.

Então decidi atualizar esse ArrayList a cada 30min e foi aí que implementei essa Thread para fazer isso pra mim.

bom… é isso ae!!

O que eu sugeri foi, ao invés de chamar a classe atualizadora com uma thread a cada 30 min, chamá-la apenas através das classes que alteram esses dados das listas. Assim você tem certeza que a lista está sempre atualizada.

hmmm… entendi!

O problema é que esses dados são atualizados por scripts independentes da aplicação. Na verdade eles nem sabem que a aplicação existe. São feitos em Perl e são utilizados somente para atualizar o banco de dados.

A minha aplicação não altera nada no banco de dados, apenas pesquisa o que tem lá. Por isso tive que pensar em alguma coisa para atualizar esses dados no contexto da aplicação, foi quando pensei nessa Thread.