Hibernate-Search, висящий со многими (90) классами сущностей.
-
23-09-2019 - |
Вопрос
Я использую Hibernate Search для моего приложения. Он хорошо настроен и работает идеально до некоторое время назад, когда он внезапно перестал работать. Причина, по моему мнению, я являюсь числом моих модельных (бобовых) классов. У меня есть около 90 классов, которые я добавляю в свою конфигурацию, при создании конфигурации Hibernate.
Когда я отключаю поиск Hibernate (удалите аннотации поиска и использую конфигурацию вместо аннотаций), я стараюсь запустить свое приложение, он работает нормально.
Но, то же приложение, когда я включаю поиск, оно просто вешает трубку. Я попытался отлаживать и нашел точное место, где оно висит.
После добавления всего класса в мой объект AnnotationsConfiguration, когда я говорю CFG.BuildSessionFactory (), он никогда не выходит из этого утверждения. (Я ждал часами !!!)
Кроме того, когда я уменьшаю количество моих модельных классов (например, скажем, половину, т. Е. 50), это выходит из этого утверждения, и приложение работает нормально.
Кто -нибудь может сказать, почему это происходит ?? Мои версии Hibernate: 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 .банка
Кроме того, если необходимо избежать использования AnnotationsConfiguration, я прочитал, что мне нужно явно настроить слушателей событий поиска ... может ли кто -нибудь перечислить все необходимые слушатели и их соответствующие классы? (Я попробовал стандартные, приведенные в поисковых книгах Hibernate, но они дают мне исключение в классе, и у меня есть все Libs в Classpath)
Вот последние несколько строк спящего следов, которые мне удалось вытащить:
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
Донно, что указывает последняя строка ??? (Hibernate -Rocision ....) После последней строки она ничего не делает (тоже без следа) и просто висит ....
Нет правильного решения
Другие советы
Вам нужно будет дать нам больше информации. Вы можете взять резьба свалки И покажите последние несколько строк ваших журналов?
Возможно, что либо: - одна из ваших объектов создает проблему - какая -то блокировка или файл висят (какую ОС используете? Некоторое ограничение количества файлов, открытых параллельно)
Позднее, если на Linux или Unix вы можете попытаться поиграть с
ulimit -n <number>
Также убедитесь, что вы время от времени запускаете оптимизатор индекса (проверьте Hibernate Search Ref Doc).
Я узнал проблему. Я не аннотировал свой Super Class. У меня есть один класс, который является базовым классом почти для всех других моих модельных классов. Но странно, что поиск Hibernate не дал никаких ошибок и предупреждений ... Я попытался найти, где на самом деле он висел. Я построил SessionFactory в отдельной потоке и напечатал трассировку потока каждые 10 нечетных секундов. К моему удивлению, это на самом деле не висило, но Stacktrace менялась, и она всегда была в классах пакетов Annotaion отражения.
Просто чтобы проверить, я увидел свой супер класс и аннотировал его, и вуаля ... это сработало ......
@Emmanuel Bernard: Можете ли вы просто подтвердить, почему Hibernate Search не дал никаких трассировков или ошибок раньше и просто повесил ??