Archivo

Archivo de Autor

Problema con drivers jdbc al migrar una aplicación java de versión 1.4 a 1.6 en Weblogic 11g

Recientemente he participado en un proyecto en el que se requería hacer un estudio de los posibles problemas que podían surgir al migrar aplicaciones java de versión 1.4 a 1.6, desplegándolas en un servidor Weblogic 11g. Se trataba de aplicaciones java J2EE con struts-hibernate. Entre las aplicaciones que teníamos de banco de pruebas, habían algunas que para conectarse a la base de datos utilizaban datasource, mientras que otras lo hacían mediante los drivers jdbc directamente.

Al empezar a migrar, las aplicaciones con datasource no dieron ningún problema de conectividad. Sin embargo, al migrar la primera aplicación con jdbc e intentar arrancarla desde la consola de Weblogic, obtuvimos el siguiente error:

java.lang.NoSuchMethodError: oracle/i18n/text/converter/CharacterConverterOGS.getInstance(I)Loracle/sql/converter/CharacterConverters;

Este error hacía que la aplicación no fuera capaz de inicializarse correctamente, ya que al inicio de la misma es cuando se está configurando su conexión con la base de datos mediante jdbc para inicializar la sesión de hibernate. Al no poder, se quedaba en estado erróneo. Además Weblogic seguía intentando iniciarla cada cierto tiempo, con lo cual se quedaba en un bucle.

Investigando el problema, que, quedaba claro, era algo relacionado con la configuración de la conexión a la base de datos y después de descartar otros problemas, encontramos una nota en el Metalink con ID 465177.1 que hace referencia a un problema muy similar y en la que se obtenía el mismo error. La solución que da Oracle es actualizar los drivers jdbc de la aplicación a los de la 11g.

Para ello basta con cambiar en el EAR el jar ubicado en /WEB-INF/lib de la versión 10 (ojdbc14.jar) por el de la 11 (ojdbc6.jar), que se puede descargar de la web de Oracle.

Una vez hecho esto, desplegamos de nuevo la aplicación y funcionó sin más.

Para evitar estos problemas, se recomienda el uso de datasources para la conexión con base de datos, ya que así se usan siempre los drivers jdbc propios del servidor. Además, el uso de datasources tiene otras ventajas, el más importante la optimización en el uso de recursos. Es debido a que el servidor gestiona un pool de conexiones que puede dar servicio a un número muy elevado de sesiones de usuario con menos conexiones que usuarios, liberando a la base de datos de carga.

Para más información sobre cómo podéis configurar un datasource en Weblogic 11g desde la consola de administración del mismo, podéis visitar el siguiente link http://download.oracle.com/docs/cd/E14571_01/apirefs.1111/e13952/taskhelp/jdbc/jdbc_datasources/CreateDataSources.html.

Categorías:Java Etiquetas: , , ,
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 126 seguidores