2012-04-20 9 views
14

estoy cargando las fuentes de datos a través de JNDI usando:Desconocido NullPointerException en JdbcOdbcDriver.finalize() Línea: 96

JDK 1.6.0_31 Tomcat 6.0.30

Cuando inicio el Eclipse (SR Indigo 2) depurador, se rompe en:

Daemon System Thread [Finalizer] (Suspended (exception NullPointerException)) 
    JdbcOdbcDriver.finalize() line: 96 
    Finalizer.invokeFinalizeMethod(Object) line: not available [native method] 
    Finalizer.runFinalizer() line: 83 
    Finalizer.access$100(Finalizer) line: 14  
    Finalizer$FinalizerThread.run() line: 160 

Estoy realmente perdido sobre lo que está causando esto. Además, no parece afectar mi ejecución en absoluto. Mis fuentes de datos se inicializan y se usan de forma normal, y obtengo todos los resultados que espero. Por lo que he leído, ¿podría estar relacionado con un problema con el controlador de Oracle?

myApp \ META-INF \ context.xml

<Resource name="jdbc/conn" auth="Container" 
    type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" 
    url="@[email protected]" username="user" password="@[email protected]" 
    initialSize="4" maxActive="8" 
    defaultAutoCommit="false" 
    accessToUnderlyingConnectionAllowed="true" 
    testOnReturn="true" 
    validationQuery="select 1 from dual" 
    poolPreparedStatements="false" 
    connectionProperties="SetBigStringTryClob=true" 
    factory="org.apache.commons.dbcp.BasicDataSourceFactory" 
/> 

myApp \ WEB-INF \ web.xml

<resource-ref> 
    <description>My DataSource</description> 
    <res-ref-name>jdbc/conn</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
+3

La gente puede querer ver el JdbcOdbcDriver [código fuente] (http://javasourcecode.org/html/open-source/jdk/jdk-6u23/sun/jdbc/odbc/JdbcOdbcDriver.java.html) como referencia. – adarshr

+0

@adarshr El enlace que dio parece ahora apuntar a spam/fishing (¿o mi computadora está infectada?). Encontré [otro enlace] (http://j6a.ru/_jdbc_odbc_driver_8java_source.html) en él. – Matthieu

+0

¿Qué versión de Oracle JDBC Driver usas? –

Respuesta

3

Eventualmente terminé ignorando esta excepción ya que no termina la ejecución. Si bien no sé la causa exacta, no parece ser fatal.

+1

Desearía haber encontrado una explicación para ello, pero nadie parece entenderlo bien ... – Periback

+1

Esta es una respuesta muy dañina ya que las excepciones ignoradas en el método de finalización conducen a la pérdida de memoria. –

+0

@ Gregory.K, estoy de acuerdo, pero como puede ver, nadie más respondió, y nunca encontré la solución real. –

0

yo supongo que se está perdiendo una llamada para inicializar(). Eso debería arreglar un NPE a OdbcApi.

-1

Antes pensaba que esta era la respuesta. Estaba equivocado.

Finalmente lo descubrí. Tenía algunos beans administrados respaldados por una base de datos. Estos beans gestionados se anotaron @eager

Cuando el servidor inició la aplicación desde eclipse, se crearon instancias y la herramienta se dirigió a la base de datos para obtener los datos. Tuve una excepción en el método del bean de la base de datos (una excepción de puntero nulo), y como resultado, la conexión a la base de datos se dejaba abierta.

De alguna manera, la carpeta .metadata se dañó y se dañó. Salí de Eclipse. Luego fui al espacio de trabajo de Eclipse y copié la carpeta .metadata en mi escritorio para tener una copia segura, luego la eliminé en el área de trabajo.

He reiniciado Eclipse. No hubo proyectos Los importé de nuevo usando Importar> Sistema de archivos.

Tuve que arreglar la ruta de compilación en las propiedades del proyecto y en la ventana> Preferencias, tuve que restablecer la página de inicio de Tomcat. Voila, se deshizo de este problema súper molesto.

Esa fue la causa del problema. Espero que esto ayude a alguien.

Cuestiones relacionadas