Foros del Web » Programación para mayores de 30 ;) » Java »

Vaadin 7 + Hibernate 4 + Spring 3

Estas en el tema de Vaadin 7 + Hibernate 4 + Spring 3 en el foro de Java en Foros del Web. ¡Hola a todos! Estoy desarrollando una aplicación con Vaadin y me devuelve el error de "espacio de Perm gen (OutOfMemoryError)". Utilizo una validación de usuarios ...
  #1 (permalink)  
Antiguo 24/03/2016, 10:04
 
Fecha de Ingreso: marzo-2016
Mensajes: 11
Antigüedad: 8 años, 8 meses
Puntos: 0
Pregunta Vaadin 7 + Hibernate 4 + Spring 3

¡Hola a todos!

Estoy desarrollando una aplicación con Vaadin y me devuelve el error de "espacio de Perm gen (OutOfMemoryError)".

Utilizo una validación de usuarios con una API, luego una segunda validación con una base de datos Hibernate pero una vez el usuario está logado, al navegar en la web se genera el error. No siempre lo da en el mismo menú, pero tampoco es siempre igual.

A nivel técnico:

- Se utilizan varias PageTable con IndexedContainer. He leído en webs que usan mucho espacio de memoría, es cierto? que utilizáis?

- La base de datos se crea en memoria y sólo tiene dos tablas. Hay algún parámetro de configuración a tener en cuenta?

El method de destroy tiene que ser "close" o hay algun otro más aconsejable?

<!-- Hibernate settings -->
<bean id="dataSource"
class="org.apache.tomcat.dbcp.dbcp.BasicDataSource "
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.pass}" />
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSes sionFactoryBean">

<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com..........." />
<property name="hibernateProperties">
<props>

<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.a uto}</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>

<prop key="hibernate.cache.use_query_cache">false</prop>
<prop key="hibernate.transaction.flush_before_completion ">true</prop>

<!-- To show sql output on the screen -->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>

<!-- Connection pool C3P0 -->
<prop key="hibernate.c3p0.acquire_increment">2</prop>
<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.max_size">100</prop>
<prop key="hibernate.c3p0.timeout">20</prop>
<prop key="hibernate.c3p0.max_statements">50</prop>
<prop key="hibernate.c3p0.idle_test_period">60</prop>

</props>
</property>
</bean>

<bean id="transactionManager"
class="org.springframework.orm.hibernate4.Hibernat eTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="persistenceExceptionTranslationPostProcessor"
class="org.springframework.dao.annotation.Persiste nceExceptionTranslationPostProcessor"/>

- Se hace una setAuthentication para el primer login y luego se sobreescribe con las authorities de los roles que devuelve la base de datos en el segundo login.

(SecurityContext) VaadinSession.getCurrent(). getSession().getAttribute("SPRING_SECURITY_CONTEXT ");

He probado la opción de configurar la memoria:
-Xmx2048m -Xms1024m -XXemoticonermSize256m -XX: MaxPermSize subrayado 512m pero no funciona (da igual poner 2G u otros). El error se genera igual.

¿Hay alguna otra manera de evitarlo? ¿Alguien se ha encontrado con ello?

¡Gracias de antemano!

Atentamente,

María
  #2 (permalink)  
Antiguo 24/03/2016, 13:27
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 7 meses
Puntos: 306
Respuesta: Vaadin 7 + Hibernate 4 + Spring 3

Cita:
He probado la opción de configurar la memoria:
-Xmx2048m -Xms1024m -XXemoticonermSize256m -XX: MaxPermSize subrayado 512m pero no funciona (da igual poner 2G u otros). El error se genera igual.
MaxPermSize no tiene que ver con la parte de la memoria dedicada a los objetos, por lo que no es solución al Pergem.

Viendo la cantidad de memoria dedicada estoy casi seguro de que tienes un problema de código, o estás tratando de tener en memoria demasiados datos o en algún sitio entras en algún bucle infinito o algo así.

¿Qué significa que la base de datos "se crea en memoria"?¿De qué tamaño estamos hablando?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 30/03/2016, 00:38
 
Fecha de Ingreso: marzo-2016
Mensajes: 11
Antigüedad: 8 años, 8 meses
Puntos: 0
Sonrisa Respuesta: Vaadin 7 + Hibernate 4 + Spring 3

Buenos días!

Muchas gracias por tu rápida respuesta! :)

Se utilizan tablas paginadas pero sólo se guardan 10 registros en memoria. En toda la aplicación hay un total de 4 tablas, las veo muy pocas, no ¿?

Te pongo un ejemplo de como se crea la tabla, a ver si también pudieran ser otras cosas :S

// ArrayList_Objetos_Mostrar_Row(): función que devuelve los registros de la llamada a la API. Son objetos de tipo "Objeto_Mostrar_Row.class"

LazyBeanContainer dataSource;
dataSource = new LazyBeanContainer(Objeto_Mostrar_Row.class,
ArrayList_Objetos_Mostrar_Row(), MessageSource,
Objeto_guarda_parámetros_búsqueda);

Map<String, ColumnProperties> map = new LinkedHashMap<String,
ColumnProperties>();


// Add objectoID
// mOBJECTOID, es una propiedad de la classe "Objeto_Mostrar_Row.class"
map.put("mOBJECTOID",
new ColumnProperties(getMessageSource().getMessage(
base + "mOBJECTOID"), 0, Align.CENTER));

// Add otras propiedades de "Objeto_Mostrar_Row.class" en el map = Columnas a mostrar en la tabla
......



//getPageLength() = 10

return new PagedTable(null,
TABLE_WIDTH, getPageLength(), dataSource, map, null);



No debería existir ningún bucle infinito, ya que las peticiones se hacen a una API y sólo una vez cuando entras en la tab o cuando das al botón de Search. Si falla la petición (conexión, datos, ....) se genera un error por pantalla y la tabla aparece vacía.


La base de datos es Hibernate y se genera en memoria en el propio servidor donde está la web. Lo comparo con SQL Server e IIS (que es lo que he trabajado siempre que estaban en servidores distintos).

Igualmente es una 'base de datos' mínima, ya que sólo contiene dos tablas para gestión de usuarios (estoy acostumbrada a base de datos de más de 100 tablas y con históricos de varios años).

Mil gracias de nuevo!!!

María

Última edición por Mariadelasflores; 30/03/2016 a las 00:50
  #4 (permalink)  
Antiguo 30/03/2016, 03:35
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 7 meses
Puntos: 306
Respuesta: Vaadin 7 + Hibernate 4 + Spring 3

Cita:
[La base de datos es Hibernate y se genera en memoria en el propio servidor donde está la web. Lo comparo con SQL Server e IIS (que es lo que he trabajado siempre que estaban en servidores distintos).
Teniendo en cuenta que Hibernate NO es una una base de datos, supongo que eres muy novata en java y que hay que tomar tus afirmaciones con pinzas.

Supongo que la base de datos será Derby o HSQL, busca cuál es, puedes probar buscando el valor de jdbc.driverClassName.

Cita:
Se utilizan tablas paginadas pero sólo se guardan 10 registros en memoria. En toda la aplicación hay un total de 4 tablas, las veo muy pocas, no ¿?
Muy poco, ese no es problema. Error mío, estaba pensando en otro error de memoria, el perGem no tiene que ver con objetos así que el problema no es nada de bucles o tamaño de datos.

¿Sucede también con el servidor recién arrancado?¿Despliegas en el servidor o desde el IDE (eclipse/netbeans)?¿Hay más aplicaciones en el servidor?¿Cómo y dónde configuras la memoria MaxPermSize?¿Versión de Tomcat?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 30/03/2016, 05:38
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 4 meses
Puntos: 182
Respuesta: Vaadin 7 + Hibernate 4 + Spring 3

Buenas,

Que servidor de aplicaciones / contenedor de servlets utilizas?
Glassfish? Tomcat? JBoss?....

No has siquiera desarrollado aun la aplicacion? Has desarrollado algo?


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #6 (permalink)  
Antiguo 30/03/2016, 06:26
 
Fecha de Ingreso: marzo-2016
Mensajes: 11
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Vaadin 7 + Hibernate 4 + Spring 3

Hola de nuevo!

Mil gracias por vuestras respuestas, normalmente en otros foros la gente tardaba mucho más en contestar.

Llevo programando en el mundo de Microsoft más de diez años (Visual Basic .Net, ASP.Net, SQL Server, BI) y me hacía ilusión ver el mundo de Java and Cía.

Así que surgió una oportunidad y como tenía muchas ganas de aprender, estoy en este proyecto desde hace más de 6 meses (ya estaba en marcha) y que está en Producción, funcionando sin ningún problema.

Es una web con varias tabs y opciones de menú para gestionar un productos y las operaciones que se pueden hacer con él (toda la funcionalidad con los productos va a través de la API).

Estoy intentando desarrollar una nueva funcionalidad.

Se compila en NetBeans, se ejecuta la web, se hace el 1er login vía spring, luego verifica que el usuario exista en la base de datos, si es así le redirige una opción de la aplicación para que introduzca un código (sólo hay esta opción en toda la web, ya que hasta que no se valide y sea correcto, no puede ver nada), se valida el código, si es ok, se refresca la Authentificacion del usuario para indicarle los roles que tiene y se actualiza la web con las opciones de menú que tiene acceso ese usuario/rol.

En este momento al navegar por las tabs, da el error. No siempre en el mismo sitio. Normalmente da el error cuando la web tiene muchos clientes y muchos productos.
La diferencia a nivel de datos es un combo que tiene los clientes, los productos siempre se cargan los 10 registros en las tablas.
El combo es el propio de Vaadin, no tiene nada especial. Simplemente que tiene la paginación para ir delante y detrás.


Datos
-------
NetBeans IDE 8.1
jdk1.7.0_79
Tomcat 7: org.apache.tomcat:tomcat-dbcp:7.0.52
Spring:org.springframework:spring-web:3.2.8.RELEASE
Hibernate: 4.1.7.Final
Vaadin 7
jdbc.driverClassName=org.apache.derby.jdbc.Embedde dDriver

Desde NetBeans se lanza en localhost. En el POM <JAVA_OPTS>-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Xms64m -Xmx128m -XX:PermSize=96M -XX:MaxPermSize=2G</JAVA_OPTS> y también he probado ejecutarlo poniéndolo los parmámetros en los goals del RUN.

Las llamadas a la API se conectan a un servidor remoto.


Cualquier pregunta más, estaré encantada de contestar ya que no sé por dónde avanzar.

Gracias y saludossssssssssssss!

María
  #7 (permalink)  
Antiguo 31/03/2016, 00:38
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 4 meses
Puntos: 182
Respuesta: Vaadin 7 + Hibernate 4 + Spring 3

Buenas,

Entonces supongo que en la implementacion que has hecho de esos tabs tienes un importante memory leak.

Deberias utilizar algun profiler para detectar donde se esta produciendo. Puedes utilizar el profiler incluido en Netbeans, por ejemplo:
https://netbeans.org/kb/docs/javaee/...er-javaee.html

Para usarlo tienes que arrancar el servidor en 'profile mode' y navegar por las tabs para monitorizar en que momento se dispara la memoria utilizada.

Si no, tambien puedes utilizar otras herramientas gratuitas incluidas en el JDK como visualVM, por ejemplo: http://docs.oracle.com/javase/8/docs...ides/visualvm/

Como pistas te podria comentar lo siguiente:
-La seccion de memoria Permgen no contiene las instancias (que estan en el heap) sino las definiciones de clases y metodos.
-Un componente que ocupa muchos espacio en permgen son los drivers de conexion a base de datos.
-Revisa que la definicion del driver la realices de forma estatica una sola vez y no cada vez que accedes a la base de datos, ya que sospecho que es eso lo que te esta pasando.


Como nota final, comentar que con Java JDK 8 el Permgen ya no existe, por lo que probablemente ya no tengas otro problema. Ademas en esta version tampoco es necesario registrar el driver jdbc.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #8 (permalink)  
Antiguo 20/04/2016, 03:56
 
Fecha de Ingreso: marzo-2016
Mensajes: 11
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Vaadin 7 + Hibernate 4 + Spring 3

Hola!

Muchas gracias por tu respuesta.
Te contesto en varias 'respuestas' ya que hay un límite de caràcteres.

Me comentaron utilizar VisualVM pero no consigo que conecte con el localhost de la web lanzada con Netbeans (localhost:8200/name-web/jsp/login.jsp).
No sé si lo has utilizado o alguien lo ha utilizado?
Se lanza Maven tomcat7:run-war
-Djava.rmi.server.hostname=localhost
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8200
Desde VIsualVM se indica localhost:8200 pero devuelve un error de ‘cannot connect to localhost:8200 ..’
Me miraré el que me comentas! Gracias!

Después de hacer muchas pruebas, realmente ‘peta’ cuando entra por primera vez en la web, una vez ha cargado todas las views en memoria y se redirige a la opción de menú donde se debería indicar en second factor (muy simple, es un panel con un textfield).

Log donde se ve la inicialización de todas las views y donde se cargan los autowired. Esto penaliza el rendimiento, se puede mejorar?
Pongo un ejemplo:
11:24:37.832 [http-bio-8200-exec-9] DEBUG c.g.......ViewCommand - Getting bean for view transactionView (transaction)
11:24:37.832 [http-bio-8200-exec-9] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'transactionView'
11:24:37.833 [http-bio-8200-exec-9] DEBUG o.s.c.a.CommonAnnotationBeanPostProcessor - Found init method on class [com….TransactionView]: public void com…...TransactionView.init()
11:24:37.833 [http-bio-8200-exec-9] DEBUG o.s.c.a.CommonAnnotationBeanPostProcessor - Registered init method on class [com….TransactionView]: org.springframework.beans.factory.annotation.InitD estroyAnnotationBeanPostProcessor$LifecycleElement @316510
11:24:37.837 [http-bio-8200-exec-9] DEBUG o.s.b.f.annotation.InjectionMetadata - Registered injected element on class [com….TransactionView]: AutowiredFieldElement for private com…..VaadinMessageSource com……..view.commons.BasicView.messageSource
11:24:37.837 [http-bio-8200-exec-9] DEBUG o.s.b.f.annotation.InjectionMetadata - Registered injected element on class [com….TransactionView]
: AutowiredFieldElement for private com…...ApiCaller com…..BasicView.apiCaller
11:24:37.837 [http-bio-8200-exec-9] DEBUG o.s.b.f.annotation.InjectionMetadata - Registered injected element on class [com….TransactionView]: AutowiredFieldElement for private com…….VaadinMessageSource com.gdi.airon.portal.transaction.TransactionView.m MessageSource
11:24:37.837 [http-bio-8200-exec-9] DEBUG o.s.b.f.annotation.InjectionMetadata - Registered injected element on class [com….TransactionView]: AutowiredFieldElement for private com.gdi.airon.portal.api.ApiCaller com.gdi.airon.portal.transaction.TransactionView.m ApiCaller
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.annotation.InjectionMetadata - Processing injected method of bean 'transactionView': AutowiredFieldElement for private com.gd.atlas.avc.common.i18n.VaadinMessageSource com.gdi.airon.portal.view.commons.BasicView.messag eSource
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'messageSource'
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.a.AutowiredAnnotationBeanPostProcessor - Autowiring by type from bean name 'transactionView' to bean named 'messageSource'
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.annotation.InjectionMetadata - Processing injected method of bean 'transactionView': AutowiredFieldElement for private ..............api.ApiCaller com.................view.commons.BasicView.apiCall er
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'apiCaller'
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.a.AutowiredAnnotationBeanPostProcessor - Autowiring by type from bean name 'transactionView' to bean named 'apiCaller'
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.annotation.InjectionMetadata - Processing injected method of bean 'transactionView': AutowiredFieldElement for private ...............VaadinMessageSource ................TransactionView.mMessageSource
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'messageSource'
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.a.AutowiredAnnotationBeanPostProcessor - Autowiring by type from bean name 'transactionView' to bean named 'messageSource'
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.annotation.InjectionMetadata - Processing injected method of bean 'transactionView': AutowiredFieldElement for private .................pi.ApiCaller com..........................TransactionView.mApiC aller
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'apiCaller'
11:24:37.871 [http-bio-8200-exec-9] DEBUG o.s.b.f.a.AutowiredAnnotationBeanPostProcessor - Autowiring by type from bean name 'transactionView' to bean named 'apiCaller'
11:24:37.872 [http-bio-8200-exec-9] DEBUG o.s.c.a.CommonAnnotationBeanPostProcessor - Invoking init method on bean 'transactionView': public void com......transaction.TransactionView.init()
11:24:37.872 [http-bio-8200-exec-9] DEBUG c.g.a.p.transaction.TransactionView - Init TransactionView start
11:24:37.872 [http-bio-8200-exec-9] DEBUG c.g.a.p.view.commons.BasicPresenter - init- BasicPresenter start
11:24:37.872 [http-bio-8200-exec-9] DEBUG c.g.a.p.transaction.TransactionView - init- TransactionView end
11:24:37.872 [http-bio-8200-exec-9] DEBUG c.g.a.c.m.MessageHandlerBeanPostProcessor - Post process bean: com.....TransactionView@26f0c7ae
11:24:37.873 [http-bio-8200-exec-9] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'transactionView'

Mil gracias por todo!
  #9 (permalink)  
Antiguo 20/04/2016, 03:57
 
Fecha de Ingreso: marzo-2016
Mensajes: 11
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Vaadin 7 + Hibernate 4 + Spring 3

Respecto a la conexión de base de datos, de momento sólo busca si existe el usuario en la base de datos y sino existe, lo crea y devuelve el objeto usuario (ahora sólo tiene el identificador). Diría que sólo se instancia una vez y luego se libera (tienes el log al final del código).

Class Provider implements AuthenticationProvider {

@Autowired
private FilterDbUtil filterDbUtil;

@Override
public Authentication authenticate(Authentication authentication)
throws AuthenticationException {
NEWCLASSAuthenticationDetails details =
(NEWCLASSAuthenticationDetails) authentication.getDetails();
String mCustomerId = details.getCustomerId();
String mUsername = (String) authentication.getPrincipal();
String mPassword = (String) authentication.getCredentials();
>> SmpUser smpUser = filterDbUtil.getUser(mCustomerId, mUsername);
}

public class FilterDbUtil {

@Autowired
private SessionFactory sessionFactory;

public SmpUser getUser(String customerId, String username) {
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
String identifier = getUserIdentifier(customerId, username);
Query query = session.createQuery("from ManageUser where identifier = :identifier");
query.setParameter("identifier", identifier);
ManageUser manageUser = (ManageUser) query.uniqueResult();
tx.commit();

if (manageUser == null) {
tx = session.beginTransaction();
manageUser = new ManageUser();
manageUser.setIdentifier(identifier);
saveUser(manageUser);
tx.commit();
}
return manageUser;
} catch (HibernateException e) {
session.getTransaction().rollback();
return null;
} finally {
if (session != null){
session.close();
}
}
}
public void saveUser(SmpUser user) {
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.saveOrUpdate(user);
tx.commit();
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
e.printStackTrace();
}
} finally {
session.close();
}
}
}

@Entity
public class ManageUser implements BasicEntity {

@Id
@Column(name = "USER_NAME")
private String identifier;
….. //get, set, tostring
}

public interface BasicEntity extends java.io.Serializable {
}


Application.spring.xml



<!-- Data Access Objects -->
<bean id="filterDbUtil" class="………….db.FilterDbUtil" />

<!-- Hibernate settings -->
<bean id="dataSource"
class="org.apache.tomcat.dbcp.dbcp.BasicDataSource "
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.pass}" />
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSes sionFactoryBean">

<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="………..db.entity" />
<property name="hibernateProperties">
<props>

<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.a uto}</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>

<prop key="hibernate.cache.use_query_cache">false</prop>
<prop key="hibernate.transaction.flush_before_completion ">true</prop>

<!-- To show sql output on the screen -->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>

<!-- Connection pool C3P0 -->
<prop key="hibernate.c3p0.acquire_increment">2</prop>
<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.max_size">100</prop>
<prop key="hibernate.c3p0.timeout">20</prop>
<prop key="hibernate.c3p0.max_statements">50</prop>
<prop key="hibernate.c3p0.idle_test_period">60</prop>

</props>
</property>
</bean>

Hibernate.properties
# jdbc.X
jdbc.driverClassName=org.apache.derby.jdbc.Embedde dDriver
jdbc.url=jdbc:derby:${catalina.home}/FilterDB;create=true
jdbc.user=
jdbc.pass=

# hibernate.X
hibernate.dialect=com.........nd.db.FixedDerbyDial ect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=update


Info. Conexión base de datos:

11:16:29.105 [http-bio-8200-exec-4] DEBUG o.h.e.j.i.LogicalConnectionImpl - Obtaining JDBC connection
11:16:29.105 [http-bio-8200-exec-4] DEBUG o.h.e.j.i.LogicalConnectionImpl - Obtained JDBC connection
.... busca ... crea...
11:16:31.309 [http-bio-8200-exec-4] DEBUG o.h.e.t.i.jdbc.JdbcTransaction - committed JDBC Connection
11:16:31.310 [http-bio-8200-exec-4] DEBUG o.h.e.t.i.jdbc.JdbcTransaction - re-enabling autocommit
11:16:31.313 [http-bio-8200-exec-4] DEBUG o.h.e.j.i.LogicalConnectionImpl - Releasing JDBC connection
11:16:31.314 [http-bio-8200-exec-4] DEBUG o.h.e.j.i.LogicalConnectionImpl - Released JDBC connection
11:16:31.315 [http-bio-8200-exec-4] DEBUG o.h.e.j.i.p.ConnectionProxyHandler - HHH000163: Logical connection releasing its physical connection

Muchas gracias!!!!
  #10 (permalink)  
Antiguo 20/04/2016, 07:29
 
Fecha de Ingreso: agosto-2013
Mensajes: 103
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Vaadin 7 + Hibernate 4 + Spring 3

Hola Maria,

He estado investigando tu problema un poco. Como conclusión he sacado que podría tener que ver con el ServletContextListener de Hibernate. Parece ser que está consumiendo toda la memoria. He leído varios blogs, y la mayoría coinciden en lo mismo. Como es por falta de memoria, o amplías la memoria que le das al NetBeans para trabajar, o aplicas otra solución que he encontrado en este artículo http://innovaskynet.blogspot.com.es/...ventar-un.html

De cualquier modo, te dejo todos los sitios que he consultado:
http://www.ibm.com/support/knowledge...e.html?lang=es
http://www.javamexico.org/blogs/aval..._space_failure
http://benito-vp.blogspot.com.es/201...moryerror.html
http://innovaskynet.blogspot.com.es/...ventar-un.html

En esta otra, acusan a tomcat como el responsable jajaja
http://library.gxtechnical.com/gxdls...c_21370,s.html

Etiquetas: hibernate, spring
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:34.