GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

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


#1

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?


#2

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?


#3

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...

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; }
}

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!!


#4

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.


#5

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.


#6