Boa tarde, sou iniciante em desenvolvimento web com java e me deparei com um problema que não sei a solução, andei procurando na internet e mesmo assim não consegui resolver, a situação é a seguinte tem um arquivo chamado novoContato.jsp que possui um formulário básico de cadastro com dois campos nome e celular, na
hora que clico em gravar ele aciona esse servlet abaixo, não dá nenhum erro pois a classe DAO e as conexões estão perfeita, mas não grava nada no banco de dados mysql que estou usando, a unica mensagem que dá é javalangnullpointerexception que vi na saída do Apache Tomcat que é o servidor que uso.
Andei pesquisando pelo para saber um pouco mais sobre a mensagem e descobri que é quando alguma variavel é nula, mais não sei resolver o problema que está nas variaveis que estou recebendo do formulário nome e celular, no netbeans ele diz assim : “A variavel nome não é usada” dai acho que a causa de não estar efetuando o cadastro no banco é essa…
drsmachado nem sei explicar agora, mas limpei o log do servidor apache e executei denovo e desapareceu o erro, acredito que foi quando meu professor mandou deixar uma classe publica agora a pouco pelo messenger, agora o servidor não está mostrando nenhum log de erro, tá funcionando perfeitamente…
Essa classe abaixo é a que faz a gravação no banco…
Se você tinha um erro, é uma péssima idéia limpar os logs sem entender perfeitamente porque ocorreu. Não é porque agora você não é capaz de simulá-lo que ele não está lá. Os programas tem a mania chata de não se corrigir sozinhos. Na verdade, esperar que isso ocorra é uma POG.
O maior problema é que isso pode só se reproduzir novamente na frente do seu cliente (ou, se for um trabalho de faculdade, seu professor).
Consegui simular o erro novamente, nunca mais apago o log do servidor
06/10/2011 20:13:30 org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/Agenda] has started
06/10/2011 20:13:33 org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/Agenda] is completed
06/10/2011 20:13:34 org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already. Could not load com.mysql.jdbc.SQLError. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1562)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3348)
at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1692)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4388)
at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1368)
at com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2737)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
06/10/2011 20:13:34 org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already. Could not load com.mysql.jdbc.ProfilerEventHandlerFactory. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1562)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4412)
at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1368)
at com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2737)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
06/10/2011 20:13:34 org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already. Could not load com.mysql.jdbc.SQLError. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1562)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3348)
at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1692)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4388)
at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1368)
at com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2737)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
06/10/2011 20:13:34 org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already. Could not load com.mysql.jdbc.ProfilerEventHandlerFactory. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1562)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4412)
at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1368)
at com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2737)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
O log está explicando que não pode criar o SQLError pois a aplicação já havia sido finalizada pelo servidor. Com a aplicação finalizada, isso gera um problema de estado inválido e a ferramenta de log anota esse fato.
Logs do tipo INFO geralmente são apenas warnings, não erros de verdade. É bom pelo menos dar uma lida neles e até pesquisar se tem alguma forma de evita-los, mas nem sempre é realmente necessário resolve-los.