Попробуйте использовать hibernate 3.4 в JBoss 5.1, но получите javax.validation.ValidationException: невозможно найти поставщика по умолчанию - PullRequest
1 голос
/ 27 октября 2010

Я столкнулся с некоторыми проблемами при использовании Hibernate 3.4 на JBoss 5.1.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 находится в каталоге server / default / lib.Я также скомпилировал hibernate-validator.jar 3.1.0 в мой файл war, потому что, похоже, в противном случае JBoss не сможет распознать, где находится валидатор.После того как я выполнил все вышеперечисленное, я упаковал свой файл war и развернул его в папке deploy.

Сервер запустился без проблем.Но когда я пытался получить доступ к своему веб-приложению, оно выдает ошибку:

2010-10-27 10: 55: 13,416 ОШИБКА [org.apache.catalina.core.ContainerBase. [Jboss.web]. [localhost]] (http-172.16.10.211-80-1) Обработка исключений ErrorPage [exceptionType = java.lang.Exception, location = / app / uncaughtException] javax.servlet.ServletException: Servlet.init () дляРодословная сервлета вызвала исключение в org.apache.catalina.core.StandardWrapper.loadServlet (StandardWrapper.java:1089) в org.apache.catalina.core.StandardWrapper.allocate (StandardWrapper.java:777) в org.apache.catalina.ApplicationDispatcher.invoke (ApplicationDispatcher.java:607) в org.apache.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:446) в org.apache.catalina.core.ApplicationDispatcher.doForward (ApplicationDispatcher)org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.java:310) в org.apache.catalina.core.StandardHostValve.custom (StandardHostValve.java): 416) в org.apache.catalina.core.StandardHostValve.throwable (StandardHostValve.java:270) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:141) в org.apache.catina.ErrorReportValve.invoke (ErrorReportValve.java:102) по адресу org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke (CachedConnectionValve.java:158) по адресу org.apache.catalina.core.StandardEngine109) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:330) в org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:829) в org.apache.coyote.http11.$ Http11ConnectionHandler.process (Http11Protocol.java:598) в org.apache.tomcat.util.net.JIoEndpoint $ Worker.run (JIoEndpoint.java:447) в java.lang.Thread.run (Thread.java:662) вызванby: org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean # 0': вызов initметод не удался;Вложенное исключение - javax.validation.ValidationException: невозможно найти поставщика по умолчанию в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.javametoe.BeBeFB.FB.WBB.BBB.WeBB.WB.BB.ByBeBe.FB.FB.WB.WB.BB.Core.ByBe.By.BeBe.By.By.BeBe.By.By.BeBe.Fe.Be.Fe.Be.Fe.Be.Fe.Be.Be.Fe .Be .Be. .Be. .Be. .Be. .Be...). .12).(AbstractAutowireCapableBeanFactory.java:519) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:j.в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean;.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190) вorg.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:563) в org.springframework.context.support.refresh (AbstractApplicationContext.java:423) в org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext (FrameworkServlet.java:442) в org.springframework.web.servlet.FrameworkServlet.pperSerg.serg.web.servlet.: 127) в javax.servlet.GenericServlet.init (GenericServlet.java:212) в org.apache.catalina.core.StandardWrapper.loadServlet (StandardWrapper.java:1048) ... еще 16 Причины: javax.validation.ValidationException: невозможно найти поставщика по умолчанию в javax.validation.Validation $ GenericBootstrapImpl.configure (Validation.java:264) в org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet (LocalValidatorFactoryBean.java:161) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1469) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.Java: 1409) ... еще 32

Похоже, что он все еще не может найти валидатор.Но это уже в военном деле.Я протестировал свое веб-приложение на пристани, и оно работало нормально.Что я сделал не так в конфигурации JBoss?

Ответы [ 2 ]

1 голос
/ 27 октября 2010

Дело в том, что 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. Это звучит странно, и я не могу подтвердить, что это требуется. Попробуйте без первого.

0 голосов
/ 02 августа 2011

В случае, если кто-то все еще ищет ответ.У меня была эта проблема, когда я использовал hibernate-validator 3.0.1 Я изменил его на 4.2.0.Final и он работает нормально.

также убедитесь, что у вас установлен validator-api jar

...