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 jars 进入 server/default/lib 目录。我还将 hibernate-validator.jar 3.1.0 编译到我的 war 文件中,因为否则 JBoss 似乎无法识别验证器的位置。完成以上所有操作后,我将我的 war 文件打包并部署到 deploy 文件夹。

服务器启动没有问题。但是当我尝试访问我的 Web 应用程序时,它会抛出一个错误:

java.lang.Thread.run(Thread.java:662) 处的 JioEndpoint$Worker.run(JIoEndpoint.java:447) 原因:org.springframework.beans.factory.BeanCreationException:创建名称为“org.springframework”的 bean 时出错。 validation.beanvalidation.LocalValidatorFactoryBean#0':调用 init 方法失败;嵌套异常是 javax.validation.ValidationException: Unable to find a 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文件中。我已经在码头服务器上测试了我的网络应用程序,它运行良好。我在 JBoss 配置中做错了什么?

4

2 回答 2

1

问题是 JBoss 有自己的 Hibernate 版本,它位于 /common/lib 而我不想使用 JBoss 提供的版本。

我认为推荐的方法是捆绑您要在应用程序中使用的库并配置 JBoss 以首先从您的应用程序加载 jar,使用具有以下内容的 jboss-web.xml(请参阅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 并且工作正常。

另外,请确保您已安装验证器 API jar

于 2011-08-01T21:19:26.337 回答