Closed GReaper closed 10 years ago
Posibles relaciones
Posibles causas
MySQLConnector
sigue devolviendo una conexión ya cerrada. Habría que hacer que se reabriese automáticamente en esta clase de ser necesario.Para ello habría que usar funciones como http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#isClosed%28%29 . Aún así ésta no garantiza que se devuelva el valor correcto en caso de errores, por lo que lo que se debería hacer es tratar de comprobar si se lanzan SQLException
. Esto debe hacerse dentro de MySQLConnector
para evitar tener que cambiar todos los demás códigos.
Posible forma: un simple SELECT
que comprobará si la conexión está activa (http://stackoverflow.com/questions/14320231/is-there-a-safe-way-to-tell-if-a-jdbc-connection-is-still-ok o http://www.coderanch.com/t/294876/JDBC/databases/Dose-checking-JDBC-Connection-alive).
Actualizo He aplicado la solución mencionada. En cuanto pueda subiré una nueva versión con este arreglo y avisaré de ello. Si se soluciona, cerraría issue.
Nueva traza tras la actualización
java.lang.NullPointerException
at ucm.ssii.turismo.recomendador.RecomendadorPlantillasAbstractas.recomendar(Unknown Source)
at ucm.ssii.turismo.recomendador.RecomendadorPlantillasConcretas.recomendar(Unknown Source)
at RecomendadorServlet.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
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:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
¿De dónde viene este NullPointerException
? ¿Qué cambios recientes ha habido en el código del recomendador?
Actualizo El error salta al recomendar museos. Voy a revisar los cambios que hice en ese módulo.
[Edito] No es correcto, me acaba de ocurrir al marcar todo menos museos.
[Edito]
La traza puesta sale solamente con museos marcados. Si marco restaurantes, parques y paseos salta otro NullPointerException
relacionado con OntoBridge. Si solo marco restaurantes no hay problema.
Actualizo Ante los problemas vistos, resubo una nueva versión a la MV haciendo una limpieza del proyecto.
El error sigue aún con la nueva versión.
Actualizo Revertido el commit del cambio en el conector a la base de datos por si fuese la causa. Subiendo nueva versión para probar.
Si falla, probar una conexión para ver si los datos enviados son correctos.
Actualizo Ya no sale el error con los museos, de modo que el problema está en el nuevo modelo de conector, debe revisarse.
IMPORTANTE:
Actualizo Ayer dejé subido un error y parece que ya funcionaban los museos. Esta mañana la máquina ha aparecido caída, de hecho Tomcat no estaba funcionando (el proceso no estaba activo). Estaré pendiente de ver si se repite o es que se me olvidó reiniciarlo correctamente.
Actualizo Tras tres días funcionando sin caídas, voy a suponer que el problema ha quedado resuelto (cruzaré los dedos). En caso de que reaparezca se puede retomar la issue.
Después de investigar, con ayuda de la versión que subí el otro día a la MV, tengo la traza del error que ocurre en servidor y que provoca que sea necesario reiniciar la MV:
Traza