2

アプリケーションに休止状態の検索を使用しています。それはよく構成されており、突然動作しなくなったときまで完全に動作していました。私によると、モデル(Bean)クラスの数が理由です。Hibernate 構成を構築する際に、構成に追加する 90 個のクラスがあります。

休止状態の検索を無効にすると (検索注釈を削除し、AnnotationsConfiguration の代わりに Configuration を使用します)、アプリケーションを起動しようとすると、正常に動作します。

しかし、同じアプリで検索を有効にすると、ハングアップします。デバッグを試みたところ、ハングする正確な場所が見つかりました。

すべてのクラスを AnnotationsConfiguration オブジェクトに追加した後、cfg.buildSessionfactory() と言うと、そのステートメントからは決して出てきません。(私は何時間も待っていました!!!)

また、モデル クラスの数を減らすと (たとえば半分、つまり 50 に)、そのステートメントから出てきて、アプリケーションは正常に動作します。

誰かがなぜこれが起こっているのか教えてもらえますか?? 私の休止状態のバージョンは次のとおりです: hibernate-core-3.3.1.GA.jar hibernate-annotations-3.4.0.GA.jar .jar

また、AnnotationsConfiguration の使用を避ける必要がある場合は、検索イベント リスナーを明示的に構成する必要があることを読みました。必要なすべてのリスナーとそれぞれのクラスを誰でもリストできますか? (Hibernate Search の書籍に記載されている標準的なものを試しましたが、ClassNotFound 例外が発生し、必要なライブラリがすべてクラスパスに含まれています)

これは、私が引っ張ることができた休止状態トレースの最後の数行です。

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

最後の行が何を示しているのか?(hibernaterecognized ....)最後の行の後、何もせず(トレースもありません)、ただハングします....

4

2 に答える 2

0

私は問題を見つけました。スーパークラスに注釈を付けていませんでした。他のほとんどすべてのモデルクラスの基本クラスである単一のクラスがあります。しかし、休止状態の検索でエラーや警告が表示されなかったのは不思議です...私は実際にどこにぶら下がっているのかを見つけるためのトリックを試みました。別のスレッドでsessionfactoryを構築し、10奇数秒ごとにスレッドのトレースを印刷しました。驚いたことに、実際にはハングしませんでしたが、スタックトレースが変更され、常に注釈リフレクションパッケージクラスに含まれていました。

確認するだけで、スーパークラスを見て注釈を付けたところ、出来上がり……うまくいきました……

@Emmanuel Bernard:休止状態の検索で以前にトレースやエラーが発生せず、ハングした理由を確認できますか?

于 2010-04-10T11:21:45.850 に答える
0

あなたは私たちにもっと多くの情報を与える必要があるでしょう。スレッドダンプを取得して、ログの最後の数行を表示できますか?

次のいずれかが発生する可能性があります。-エンティティの1つが問題を引き起こしている-ロックまたはファイルがハングしている(使用しているOSはどれですか?並行して開くファイルの数を制限します)

後で、LinuxまたはUNIXの場合は、

ulimit -n <number>

また、インデックスオプティマイザを時々実行するようにしてください(Hibernate Searchの参照ドキュメントを確認してください)。

于 2010-03-31T07:23:39.093 に答える