Conexao ou Statement ou ResultSet recebendo null depois de abertos

Meu problema é o seguinte, o resultSet ou o statement ou a conexao está recebendo null em algum momento depois de criada, só não sei onde e porque, e nem o momento que isso ocorre porque é só de vez em quando, alguem sabe o porque?
Meu codigo:

 public void consulta() {
        String query = "";
        ResultSet rs= null;
        Conexao con = new Conexao();
        con.iniciaConexao();
        try {
            query = "select * from PESSOA limit 1";
            rs= con.stmt2.executeQuery(query);

            if (rs.next()) {
                setCodigo(rs.getInt("CODIGO"));
                setNome(rs.getString("NOME"));
}
} catch (Exception e) {
            e.printStackTrace();
            System.out.println("Erro no metodo consulta,query= " + query + ", con=" + con.conexao + ",stmt2="+con.stmt2+" rs=" + rs+ " BD:" + e);
        } finally {
            //fecha o resultSet, o statement e a conexao
        }

Metodo iniciaConexao, neste metodo nunca acusa nenhum erro, ou seja, esta criando tudo certinho.

public void iniciaConexao() {
        try {
//            Context initContext = new InitialContext();
//            ds = (DataSource) initContext.lookup("java:/comp/env/jdbc/teste");
            InitialContext ic = new InitialContext();
            Context initCtx = new InitialContext();
            if (initCtx == null) {
                System.out.println(new Data().getDataCompleta() + " initCtx esta null");
            }
            Context envCtx = (Context) initCtx.lookup("java:comp/env");
            if (envCtx == null) {
                System.out.println(new Data().getDataCompleta() + " envCtx esta null");
            }
            ds = (DataSource) envCtx.lookup("jdbc/teste");
            if (ds == null) {
                System.out.println(new Data().getDataCompleta() + " ds esta null");
            }
            conexao= ds.getConnection();
            if (conexao== null) {
                System.out.println(new Data().getDataCompleta() + " conexaoesta null");
            }
            stmt2 = conexao.createStatement();
            if (stmt2 == null) {
                System.out.println(new Data().getDataCompleta() + " stmt2 esta null");
            }
        } catch (SQLException ex) {
            System.out.println(new Data().getDataCompleta() + "iniciaConexao");
            ex.printStackTrace();
        } catch (NamingException ex) {
            System.out.println(new Data().getDataCompleta() + "iniciaConexao2");
            ex.printStackTrace();
        }
    }

dao quando ele lança o exception no metodo consulta a conexao ou o statement ou o resultSet está null, mas isso so acontece de vez em quando, isso pode ser problema de rede? ou é algum problema de aplicação?

Estou usando pool do tomcat 7.0.26.

Meu erro é o seguinte:

java.lang.NullPointerException
	at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1527)
	at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
	at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
	at Cadastro.Pessoal.ConsultaConta(Pessoal.java:1880)
	at Sistema.Sessao.Login(Sessao.java:144)
	at org.apache.jsp.menu.menu_jsp._jspService(menu_jsp.java:103)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.filters.ExpiresFilter.doFilter(ExpiresFilter.java:1179)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at com.googlecode.psiprobe.Tomcat70AgentValve.invoke(Tomcat70AgentValve.java:38)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:636)

Nesse caso o statement ja estava null:

Erro no metodoconsulta,query= select * from PESSOA limit 1, con2=jdbc:mysql://192.168.1.1:3306/teste?autoReconnect=true&zeroDateTimeBehavior=convertToNull, UserName=root@192.168.1.25, MySQL-AB JDBC Driver, stmt2=null, hsyRS=null BD:java.lang.NullPointerException

1 - Por que não usa preparedstatement?
2 - Já debugou para tentar ver onde ocorre o erro?

[quote=drsmachado]1 - Por que não usa preparedstatement?
2 - Já debugou para tentar ver onde ocorre o erro?[/quote]+1

Dá uma olhada no erro, ele aponta exatamente onde acontece o problema: at Cadastro.Pessoal.ConsultaConta(Pessoal.java:1880)

Ja tentei usar o prepared e acontece a mesma coisa, e esse metodo consultaConta é o mesmo consulta só q dei uma resumida nele pra ficar mais facil de entender.
Tambem não consigo debugar porque esse erro so acontece em produção quando tento dubugar localmente nunca acontece esse erro.
Pelos System.out que eu coloquei aqui o erro acontece no momento em que chamo

Pode ser alguma problema de banco talvez? Uso o mysql 5.0.51a community.

[quote=wanderman]Ja tentei usar o prepared e acontece a mesma coisa, e esse metodo consultaConta é o mesmo consulta só q dei uma resumida nele pra ficar mais facil de entender.
Tambem não consigo debugar porque esse erro so acontece em produção quando tento dubugar localmente nunca acontece esse erro.
Pelos System.out que eu coloquei aqui o erro acontece no momento em que chamo

Pode ser alguma problema de banco talvez? Uso o mysql 5.0.51a community.
[/quote]
Não.
Mas pode ser que você esteja fechando a conexão e tentando alguma transação após a conexão ter sido fechada.
Para isto que se criam logs. Assim fica mais fácil de se identificar onde o erro ocorre e quem o está causando.
Dê uma olhada na API de log do Mentawai, creio que seja bem tranquilo para adicionar ao projeto.