2015-07-13 2 views
-1

Я пытаюсь развернуть приложение в Weblogic 10.3.6, которое хорошо работает в Tomcat 8. Я столкнулся с проблемой и исправил проблему, наконец, я застрял в одной ошибке, 2 дня. Проблема связана с аннотацией @Valid. Я получаю исключение, как показано ниже.@Valid в Weblogic 10.3.6 не работает

Исключение

java.lang.AbstractMethodError: org.apache.openjpa.persistence.PersistenceProviderImpl.getProviderUtil()Ljavax/persistence/spi/ProviderUtil; 
    at javax.persistence.Persistence$PersistenceUtilImpl.isLoaded(Unknown Source) 
    at org.hibernate.validator.internal.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:57) 
    at org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:137) 
    at org.hibernate.validator.internal.engine.resolver.SingleThreadCachedTraversableResolver.isReachable(SingleThreadCachedTraversableResolver.java:46) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.isCascadeRequired(ValidatorImpl.java:1277) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateCascadedConstraints(ValidatorImpl.java:484) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:331) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:152) 
    at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:108) 
    at org.springframework.validation.DataBinder.validate(DataBinder.java:781) 
    at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.validateIfApplicable(AbstractMessageConverterMethodArgumentResolver.java:188) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:104) 
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77) 
    at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:129) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) 

weblogic.xml

<?xml version="1.0" encoding="UTF-8"?> 
<wls:weblogic-web-app 
    xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.1/weblogic-web-app.xsd"> 
    <wls:container-descriptor> 
     <wls:index-directory-enabled>false</wls:index-directory-enabled> 
     <wls:prefer-application-packages> 
      <wls:package-name>org.slf4j</wls:package-name> 
      <wls:package-name>antlr.*</wls:package-name> 
      <wls:package-name>javassist</wls:package-name> 
      <wls:package-name>javax.validation.*</wls:package-name> 
      <wls:package-name>javax.validation.bootstrap.*</wls:package-name> 
      <wls:package-name>javax.validation.constraints.*</wls:package-name> 
      <wls:package-name>javax.validation.groups.*</wls:package-name> 
      <wls:package-name>javax.validation.metadata.*</wls:package-name> 
      <wls:package-name>javax.validation.spi.*</wls:package-name> 
      <wls:package-name>org.hibernate.*</wls:package-name> 
      <wls:package-name>org.hibernate.ejb.*</wls:package-name> 
      <wls:package-name>org.hibernate.validator.*</wls:package-name> 
      <wls:package-name>org.hibernate.validator.internal.*</wls:package-name> 
      <wls:package-name>org.hibernate.validator.internal.engine.*</wls:package-name> 
      <wls:package-name>org.hibernate.validator.internal.engine.resolver.*</wls:package-name> 
      <wls:package-name>org.springframework.*</wls:package-name> 
      <wls:package-name>org.springframework.validation.*</wls:package-name> 
      <wls:package-name>org.springframework.validation.beanvalidation.*</wls:package-name> 
      <wls:package-name>org.springframework.security.*</wls:package-name> 
      <wls:package-name>org.springframework.security.config.*</wls:package-name> 
      <wls:package-name>org.springframework.security.core.*</wls:package-name> 
      <wls:package-name>org.springframework.security.web.*</wls:package-name> 
      <wls:package-name>org.springframework.oxm.*</wls:package-name> 
      <wls:package-name>org.springframework.oxm.jaxb.*</wls:package-name> 
      <wls:package-name>org.springframework.jms.*</wls:package-name> 
      <wls:package-name>org.apache.commons.*</wls:package-name> 
      <wls:package-name>org.apache.xmlbeans.*</wls:package-name> 
      <wls:package-name>javax.jws.*</wls:package-name> 
      <wls:package-name>org.springframework.aop.*</wls:package-name> 
      <wls:package-name>org.springframework.aop.aspectj.*</wls:package-name> 
      <wls:package-name>org.springframework.web.*</wls:package-name> 
      <wls:package-name> org.springframework.web.method.*</wls:package-name> 
      <wls:package-name>org.springframework.web.method.support.*</wls:package-name> 
      <wls:package-name>org.springframework.web.servlet.*</wls:package-name> 
      <wls:package-name>org.springframework.web.servlet.mvc.*</wls:package-name> 
      <wls:package-name> org.springframework.aop.support.AopUtils.*</wls:package-name> 
      <wls:package-name> org.springframework.aop.support.*</wls:package-name> 
      <wls:package-name>org.joda.*</wls:package-name> 
     </wls:prefer-application-packages> 
     <wls:prefer-application-resources> 
       <wls:resource-name>org.springframework.*</wls:resource-name> 
       <wls:resource-name>javax.persistence.*</wls:resource-name> 
       <wls:resource-name>javax.validation.*</wls:resource-name> 
       <wls:resource-name>org.hibernate.*</wls:resource-name> 
     </wls:prefer-application-resources> 

     <!-- If the show-archived-real-path-enabled element is set to true, then the servlet container's getRealPath() 
     for archived web applications will return the canonical path of the resource file otherwise it will be null--> 

     <wls:show-archived-real-path-enabled>true</wls:show-archived-real-path-enabled> 


    </wls:container-descriptor> 
</wls:weblogic-web-app> 

Пожалуйста, помогите мне решить эту проблему.

+0

JPATraversableResolver имеет вызов Persistence.getPersistenceUtil(), который должен перейти в javax.persistance, но он забирает меня в org.apache.openjpa.persistence на weblogic – Kumar

ответ

1

Проблема в неправильной/несогласованной установке JPA. Классы интерфейса javax.persistence не соответствуют классам реализации, предоставляемым org.apache.openjpa. См. Также https://hibernate.atlassian.net/browse/HV-425.

Этот блог post описывает обходное решение.

+0

Я пытаюсь использовать решение для блога. Но я получаю исключение "java.lang.NoClassDefFoundError: Не удалось инициализировать класс org.hibernate.validator.internal.engine.ConfigurationImpl" при загрузке приложения – Kumar

+0

Какую версию Hibernate Validator вы используете? ConfigurationImpl перенесла пакет в течение всего срока его службы. Раньше это было в org.hibernate.validator.engine – Hardy

+0

Это 4.3.2.Final – Kumar