Hibernate-Suche hängt mit vielen (90) Entitätsklassen.
-
23-09-2019 - |
Frage
Ich benutze Hibernate -Suche nach meiner Anwendung. Es ist gut konfiguriert und läuft perfekt bis vor einiger Zeit, als es plötzlich aufhörte zu arbeiten. Der Grund, warum ich die Anzahl meines Modells (Bean) als Bean -Klassen bin. Ich habe einige 90 Klassen, die ich zu meiner Konfiguration hinzufüge, während ich meine Hibernate -Konfiguration erstelle.
Wenn ich die Suche in der Hibernate -Suche deaktiviere (die Suchanmerkungen entfernen und die Konfiguration anstelle von Anmerkungen verwenden), versuche ich, meine Anwendung zu starten, es funktioniert einwandfrei.
Aber die gleiche App, wenn ich die Suche aktiviere, hängt sie einfach auf. Ich versuchte zu debuggen und fand genau den Ort, an dem es hängt.
Nachdem ich die gesamte Klasse zu meinem Anmerkungskonfigurationsobjekt hinzugefügt habe, kommt es nie aus dieser Aussage, wenn ich sage, dass CFG.BuildSessionFactory () nicht ausgeht. (Ich habe stundenlang gewartet !!!)
Auch wenn ich die Anzahl meiner Modellklassen verringere (wie zum halben IE 50), kommt es aus dieser Aussage und die Anwendung funktioniert einwandfrei.
Kann jemand sagen, warum das passiert? Meine Versionen von Hibernate sind: Hibernate-Core-3.3.1.ga.jar Hibernate-Annotations-Annotationen-0.0.ga.jar Hibernate-commons-Annotations-3.1.0.ga.jar Hibernate-Search-3.1.0.ga .Krug
Auch wenn es vermeiden muss, Anmerkungen zu verwenden, habe ich gelesen, dass ich die Suchereignishörer explizit konfigurieren muss. Kann jemand alle neccessary -Hörer und ihre jeweiligen Klassen auflisten? (Ich habe die Standards in Hibernate -Suchbüchern ausprobiert, aber sie geben mir eine Ausnahme von Classnotfound und ich habe alle Neccesarty -Bibliotheken im Klassenpfad)
Hier sind die letzten Zeilen von Hibernate Trace, die ich zu ziehen habe:
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, was die letzte Zeile anzeigt ??? (Hibernatere erfasst ....) Nach der letzten Zeile macht es nichts (keine Spur) und hängt nur ....
Keine korrekte Lösung
Andere Tipps
Sie müssen uns weitere Informationen geben. Kannst du eine nehmen? Thread Dump Und zeigen Sie die letzten Zeilen Ihrer Protokolle?
Es ist möglich, dass entweder: - eines Ihrer Entität ein Problem darstellt - eine Sperre oder Datei hängt (welches Betriebssystem verwenden Sie? Einige begrenzen die Anzahl der parallel geöffneten Dateien).
Zum späteren, wenn es unter Linux oder Unix ist, können Sie versuchen, mit zu spielen
ulimit -n <number>
Stellen Sie außerdem sicher, dass Sie den Indexoptimierer von Zeit zu Zeit ausführen (überprüfen Sie den Hibernate Search Ref Doc).
Ich fand das Problem heraus. Ich hatte meine Superklasse nicht kommentiert. Ich habe eine einzelne Klasse, die die Basisklasse für fast alle meine anderen Modellklassen ist. Aber es ist seltsam, dass Hibernate -Suche weder Fehler noch Warnungen gab ... Ich habe einen Trick versucht, um herauszufinden, wo es tatsächlich hing. Ich habe das SessionFactory in einem separaten Thread erstellt und die Spur des Threads alle 10 ungeraden Sekunden gedruckt. Zu meiner Überraschung hing es tatsächlich nicht, aber die Stacktrace änderte sich und es war immer in Annotaion Reflection Paket -Paket.
Nur um es zu überprüfen, ich habe meine Superklasse gesehen und sie kommentierte und voila ...... es hat funktioniert ......
@Emmanuel Bernard: Können Sie nur bestätigen, warum die Suche in Hibernate keine Spuren oder Fehler gegeben hat und nur gehängt hat?