Hibernate-Search colgando con muchas (90) clases de entidad.
-
23-09-2019 - |
Pregunta
Estoy usando Hibernate Search para mi aplicación. Está bien configurado y funcionando perfectamente hasta hace algún tiempo, cuando dejó de funcionar de repente. La razón según yo es el número de mis clases de modelo (Bean). Tengo unas 90 clases, que agrego a mi configuración, mientras construyo mi configuración de hibernación.
Cuando deshabilo la búsqueda de hibernación (elimine las anotaciones de búsqueda y uso la configuración en lugar de la configuración de anotaciones), intento iniciar mi aplicación, funciona bien.
Pero, la misma aplicación cuando habilito la búsqueda, simplemente cuelga. Intenté depurar y encontré el lugar exacto donde cuelga.
Después de agregar toda la clase a mi objeto de Configuración de anotaciones, cuando digo CFG.BuildSessionFactory (), nunca sale de esa declaración. (¡He esperado durante horas!)
Además, cuando disminuyo el número de mis clases de modelos (como decir a la mitad de IE 50) sale de esa declaración y la aplicación funciona bien.
¿Alguien puede decir por qué está sucediendo esto? Mis versiones de Hibernate son: Hibernate-Core-3.3.1.ga.jar Hibernate-Annotations-3.4.0.ga.jar Hibernate-Commons-Annotations-3.1.0.ga.jar Hibernate-Search-3.1.0.Ga .frasco
Además, si necesito evitar el uso de AnnotationsConfiguration, leí que necesito configurar los oyentes de eventos de búsqueda explícitamente. ¿Alguien puede enumerar a todos los oyentes necesarios y sus respectivas clases? (Probé los estándares que se dan en los libros de búsqueda de hibernación, pero me dan una excepción de clase y tengo todas las librías de Neccesarty en classpath)
Aquí están las últimas líneas de hibernación Trace que logré tirar:
16:09:32,814 INFO AnnotationConfiguration:369 - Hibernate Validator not found: ignoring
16:09:32,892 INFO ConnectionProviderFactory:95 - Initializing connection provider: org.hibernate.connection.C3P0ConnectionProvider
16:09:32,895 INFO C3P0ConnectionProvider:103 - C3P0 using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/autolinkcrmcom_data
16:09:32,898 INFO C3P0ConnectionProvider:104 - Connection properties: {user=root, password=****}
16:09:32,900 INFO C3P0ConnectionProvider:107 - autocommit mode: false
16:09:33,694 INFO SettingsFactory:116 - RDBMS: MySQL, version: 5.1.37-1ubuntu5.1
16:09:33,696 INFO SettingsFactory:117 - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-3.1.10 ( $Date: 2005/05/19 15:52:23 $, $Revision: 1.1.2.2 $ )
16:09:33,701 INFO Dialect:175 - Using dialect: org.hibernate.dialect.MySQLDialect
16:09:33,707 INFO TransactionFactoryFactory:59 - Using default transaction strategy (direct JDBC transactions)
16:09:33,709 INFO TransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
16:09:33,711 INFO SettingsFactory:170 - Automatic flush during beforeCompletion(): disabled
16:09:33,714 INFO SettingsFactory:174 - Automatic session close at end of transaction: disabled 16:09:32,814 INFO AnnotationConfiguration:369 - Hibernate Validator not found: ignoring
16:09:32,892 INFO ConnectionProviderFactory:95 - Initializing connection provider: org.hibernate.connection.C3P0ConnectionProvider
16:09:32,895 INFO C3P0ConnectionProvider:103 - C3P0 using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/autolinkcrmcom_data
16:09:32,898 INFO C3P0ConnectionProvider:104 - Connection properties: {user=root, password=****}
16:09:32,900 INFO C3P0ConnectionProvider:107 - autocommit mode: false
16:09:33,694 INFO SettingsFactory:116 - RDBMS: MySQL, version: 5.1.37-1ubuntu5.1
16:09:33,696 INFO SettingsFactory:117 - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-3.1.10 ( $Date: 2005/05/19 15:52:23 $, $Revision: 1.1.2.2 $ )
16:09:33,701 INFO Dialect:175 - Using dialect: org.hibernate.dialect.MySQLDialect
16:09:33,707 INFO TransactionFactoryFactory:59 - Using default transaction strategy (direct JDBC transactions)
16:09:33,709 INFO TransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
16:09:33,711 INFO SettingsFactory:170 - Automatic flush during beforeCompletion(): disabled
16:09:33,714 INFO SettingsFactory:174 - Automatic session close at end of transaction: disabled
16:09:33,716 INFO SettingsFactory:181 - JDBC batch size: 15
16:09:33,719 INFO SettingsFactory:184 - JDBC batch updates for versioned data: disabled
16:09:33,721 INFO SettingsFactory:189 - Scrollable result sets: enabled
16:09:33,723 DEBUG SettingsFactory:193 - Wrap result sets: disabled
16:09:33,725 INFO SettingsFactory:197 - JDBC3 getGeneratedKeys(): enabled
16:09:33,727 INFO SettingsFactory:205 - Connection release mode: auto
16:09:33,730 INFO SettingsFactory:229 - Maximum outer join fetch depth: 2
16:09:33,732 INFO SettingsFactory:232 - Default batch fetch size: 1000
16:09:33,735 INFO SettingsFactory:236 - Generate SQL with comments: disabled
16:09:33,737 INFO SettingsFactory:240 - Order SQL updates by primary key: disabled
16:09:33,740 INFO SettingsFactory:244 - Order SQL inserts for batching: disabled
16:09:33,742 INFO SettingsFactory:420 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
16:09:33,744 INFO ASTQueryTranslatorFactory:47 - Using ASTQueryTranslatorFactory
16:09:33,747 INFO SettingsFactory:252 - Query language substitutions: {}
16:09:33,750 INFO SettingsFactory:257 - JPA-QL strict compliance: disabled
16:09:33,752 INFO SettingsFactory:262 - Second-level cache: enabled
16:09:33,754 INFO SettingsFactory:266 - Query cache: disabled
16:09:33,757 INFO SettingsFactory:405 - Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge
16:09:33,759 INFO RegionFactoryCacheProviderBridge:61 - Cache provider: net.sf.ehcache.hibernate.EhCacheProvider
16:09:33,762 INFO SettingsFactory:276 - Optimize cache for minimal puts: disabled
16:09:33,764 INFO SettingsFactory:285 - Structured second-level cache entries: disabled
16:09:33,766 INFO SettingsFactory:314 - Statistics: disabled
16:09:33,769 INFO SettingsFactory:318 - Deleted entity synthetic identifier rollback: disabled
16:09:33,771 INFO SettingsFactory:333 - Default entity-mode: pojo
16:09:33,774 INFO SettingsFactory:337 - Named query checking : enabled
16:09:33,869 INFO Version:20 - Hibernate Search 3.1.0.GA
16:09:35,134 DEBUG DocumentBuilderIndexedEntity:157 - Field selection in projections is set to false for entity **com.xyz.abc**.
recognized hibernaterecognized hibernaterecognized hibernaterecognized hibernaterecognized hibernaterecognized hibernaterecognized hibernaterecognized hibernaterecognized hibernaterecognized hibernateDocumentBuilderIndexedEntity
Donno ¿Qué indica la última línea? (HibernaterCogned ...) Después de la última línea no hace nada (sin rastro también) y solo cuelga ...
No hay solución correcta
Otros consejos
Tendrá que darnos más información. ¿Puedes tomar un volcado ¿Y mostrar las últimas líneas de sus registros?
Es posible que: - una de sus entidades esté planteando un problema, se cuelga algún bloqueo o archivo (¿qué sistema operativo está usando? Algunos limitan el número de archivos abiertos en paralelo)
Para el posterior, si está en Linux o Unix, puede intentar jugar con
ulimit -n <number>
También asegúrese de ejecutar el optimizador de índice de vez en cuando (verifique el documento de reflexión de búsqueda Hibernate).
Descubrí el problema. No había anotado mi súper clase. Tengo una sola clase, que es la clase base para casi todas mis otras clases de modelos. Pero es extraño que la búsqueda hibernada no haya dado ningún error ni advertencias ... Intenté un truco para encontrar dónde estaba colgando. Construí el SessionFactory en un hilo separado e imprimí el rastro del hilo cada 10 segundos extraños. Para mi sorpresa, en realidad no colgaba, pero el Stacktrace estaba cambiando, y siempre estaba en clases de paquetes de reflexión de Annotaion.
Solo para comprobar, vi mi súper clase y la anoté, y listo ...... funcionó ......
@Emmanuel Bernard: ¿Puedes confirmar por qué Hibbernate Search no dio ningún rastro o error antes y simplemente colgado?