Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 06-jun-2008, 08:23   #1 (permalink)
javiergg777 ha deshabilitado el karma
 
Fecha de Ingreso: junio-2008
Mensajes: 4
Pregunta Hibernate con Oracle

Un saludo a todos los amigos del foro...
Bueno estoy desarrollando una aplicacion Web con Java + Hibernate y una BD Oracle. Todo sale bien, pues al hacer correr mapea la BD bien puedo hacer consultas El PROBLEMA es cuando lo dejo por un buen tiempo (2 o 3 horas) sin que yo haga nada sale el siguiente error:

[WARN] SQL Error: 17002, SQLState: null
[ERROR] Excepción de E/S: Connection timed out
[INFO] ERROR LOG
exception.getMessage() = could not execute query
exception.getMessage() = [Ljava.lang.StackTraceElement;@1fbafbb
exception.getCause() = java.sql.SQLException: Excepción de E/S: Connection timed out
exception.fillInStackTrace() = org.hibernate.exception.GenericJDBCException: could not execute query

Y cuando quiero volver a consultar algo me sale:

[WARN] SQL Error: 17008, SQLState: null
[ERROR] Conexión cerrada
[INFO] ERROR LOG
exception.getMessage() = could not execute query
exception.getMessage() = [Ljava.lang.StackTraceElement;@e01873
exception.getCause() = java.sql.SQLException: Conexión cerrada
exception.fillInStackTrace() = org.hibernate.exception.GenericJDBCException: could not execute query

Mi configuracion de mi archivo hibernate.cfg.xml es:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer" >false</property>
<property name="hibernate.connection.driver_class">oracle.jd bc.driver.OracleDriver</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@ host:1521:DBXXXX</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.dialect">org.hibernate.dialect.Ora cle9Dialect</property>
<property name="current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>

No entiendo que pasa por que aparece 'Connection timed out' y luego 'Conexión cerrada' .

De antemano Gracias por su ayuda!!!

Att. Javi
javiergg777 está desconectado   Responder Citando
Antiguo 07-jun-2008, 14:30   #2 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.495
Respuesta: Hibernate con Oracle

Muchas BDD cierran las conexiones que han estado inactivas durante X tiempo, asi que es "normal" lo que te pasa. Tu servidor de BDD esta cerrando las conexiones al cabo de un tiempo y cuando Hibernate va a usar la conexion, se encuentra con que esta cerrada.

Muchos DataSources tienen opciones de configuracion para evitar eso, haciendo llamadas periodicamente para comprobar que la conexion sigue abierta y de paso que la BDD no la cierre. Busca a ver las opciones de configuracion de tu DataSource, que seguramente tendra algo de eso.

S!
__________________
TAANSTAFL - Para obtener respuestas inteligentes, lo mejor es empezar por preguntar de forma inteligente.
GreenEyed está desconectado   Responder Citando
Antiguo 09-jun-2008, 09:20   #3 (permalink)
javiergg777 ha deshabilitado el karma
 
Fecha de Ingreso: junio-2008
Mensajes: 4
Respuesta: Hibernate con Oracle

GreenEyed, gracias por tu colaboración...
Te comento que en Oracle la BD que estoy usando tiene un Profile 'DEFAULT', y este profile a su vez tiene una confiuración UNLIMITED para todo inclusive para Connect time. ¿Lo cerrara la conexión el Hibernate y no la BD?

Ahora lo que comentas de usar un DataSources estaba buscando y encontra el:
c3p0 con Hibernate que tiene varias opciones para la conexión, lo malo es que aun no hemos definido que Servidor de Aplicaciones usaremos y me imagino que para configurar esto es diferente por cada Servidor de aplicaciones.

Tabien me pregunto ¿Por que la BD sigue mapeada si cerro la conexión y no se vuelve a reconectar?

Gracias.

Javi.
javiergg777 está desconectado   Responder Citando
Antiguo 09-jun-2008, 13:58   #4 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.495
Respuesta: Hibernate con Oracle

Si usas c3p0 con Hibernate, entonces tu configuracion va aparte del servidor de aplicaciones y será la misma independientemente del que uses. La configuracion del c3p0 es la que deberias mirar.

No soy un DBA en Oracle, pero creo que es el servidor de aplicaciones en global el que corta las conexiones que cree que se han perdido por inactividad, y no lo hace por perfiles. Puede que ese valor sea para otra cosa. De todas formas, que el servidor de BDD no corte las conexiones inactivas no es buena cosa, por que sirve para algo. Es mejor configurar que el DataSource las haga activas periodicamente.

El por que no se reconecta... eso tendras que preguntarselo a los que hicieron c3p0, : Seguramente pensaron que la gente que tuviera ese problema configuraria el pool con los valores adecuados para mantener la conexion activa.

S!
__________________
TAANSTAFL - Para obtener respuestas inteligentes, lo mejor es empezar por preguntar de forma inteligente.
GreenEyed está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 21:40.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93