1

JBoss 5.1 で Hibernate 3.4 を使用すると、いくつかの問題に遭遇しました。Hibernate 3.4 は JPA 1.0 の実装であるため、JBoss 5.1 で使用しても問題ありません。JBoss には独自のバージョンの Hibernate があり、これは /common/lib にありますが、JBoss が提供するバージョンは使用したくありません。私がしたことは、そのフォルダーから hibernate-annotations.jar、hibernate-commons-annotations.jar、hibernate-core.jar、hibernate-entitymanager.jar、hibernate-jmx.jar、および hibernate-validator.jar を削除して、私のHibernate 3.4 jarをserver/default/libディレクトリに入れます。また、hibernate-validator.jar 3.1.0 を war ファイルにコンパイルしました。そうしないと、JBoss がバリデーターの場所を認識できないようです。上記のすべてを行った後、war ファイルをパッケージ化し、それを deploy フォルダーにデプロイしました。

サーバーは問題なく起動しました。しかし、Web アプリケーションにアクセスしようとすると、エラーがスローされます。

JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:662) 原因: org.springframework.beans.factory.BeanCreationException: 'org.springframework. validation.beanvalidation.LocalValidatorFactoryBean#0': init メソッドの呼び出しに失敗しました。ネストされた例外は javax.validation.ValidationException: Unable to find the default provider at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean です(AbstractAutowireCapableBeanFactory.java:519) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) で org.

まだバリデータが見つからないようです。しかし、それはすでにwarファイルにあります。Jetty サーバーで Web アプリをテストしたところ、問題なく動作しました。JBoss 設定で何が間違っていますか?

4

2 に答える 2

1

JBoss には独自のバージョンの Hibernate があり、これは /common/lib にありますが、JBoss が提供するバージョンは使用したくありません。

推奨されるアプローチは、アプリケーションで使用したいライブラリをバンドルし、最初に jboss-web.xml を次の内容で使用してアプリケーションから jar をロードするように JBoss を設定することだと思います ( ClassLoadingConfigurationを参照)。

<jboss-web>
   <class-loading java2ClassLoadingCompliance="false">
    <loader-repository>
        unique.packege.name:archive=your_project.war
        <loader-repository-config>
            java2ParentDelegation=false
        </loader-repository-config>
    </loader-repository>
   </class-loading>
</jboss-web>

私は Bean Validation を使用するときにこれを自分でテストしていませんが、このスレッド(およびこれも) で報告されたユーザーは、バンドルされているバリデーターを から置き換える必要がありましたcommon/lib。これは奇妙に聞こえますが、必須かどうかは確認できません。最初なしで試してください。

于 2010-10-27T01:15:26.917 に答える
0

誰かがまだ答えを探している場合に備えて。hibernate-validator 3.0.1 を使用していたときにこの問題が発生しました。これを 4.2.0.Final に変更したところ、正常に動作しました。

また、validator-api jar がインストールされていることを確認してください

于 2011-08-01T21:19:26.337 に答える