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