2016-12-16 4 views
6

У меня есть проект, основанный на платформе Spring-model-view-controller (MVC). Версия платформы Spring-model-view-controller (MVC) - 3.2.8.AbstractMethodError в Spring Filter org.hibernate.ejb.HibernatePersistence.getProviderUtil() Ljavax/persistence/spi/ProviderUtil;

я реализовал фильтр с этим методом:

public void doFilter(ServletRequest request, 
         ServletResponse response, 
         FilterChain filterChain) throws ServletException, IOException { 

     HttpServletRequest httpServletRequest; 
     ThreadContext threadContext; 

     //String path = ((HttpServletRequest) request).getRequestURI(); 

     if (request instanceof HttpServletRequest) { 
      httpServletRequest = (HttpServletRequest) request; 
      threadContext = ThreadContext.getInstance(); 

      try { 

       DetailedUser ecasUser = (DetailedUser) httpServletRequest.getUserPrincipal(); 

       if (ecasUser != null) { 
        threadContext.setDomainUsername(ecasUser.getDomainUsername()); 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      if (httpServletRequest.getRemoteUser()!=null) {   
       threadContext.setUserID(httpServletRequest.getRemoteUser()); 
      } 
     } 


     try { 

      if (filterChain != null) { 

       filterChain.doFilter(request, response);     

      } 

     } catch (IOException e) { 

      LOGGER.equals(e.getMessage()); 
     }  
    } 

В этой строке filterChain.doFilter(request, response); у меня есть эта странная ошибка:

] Root cause of ServletException. 
ava.lang.AbstractMethodError: org.hibernate.ejb.HibernatePersistence.getProviderUtil()Ljavax/persistence/spi/ProviderUtil; 
     at javax.persistence.Persistence$PersistenceUtilImpl.isLoaded(Persistence.java:110) 
     at org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:62) 
     at org.hibernate.validator.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:94) 
     at org.hibernate.validator.engine.resolver.SingleThreadCachedTraversableResolver.isReachable(SingleThreadCachedTraversableResolver.java:47) 
     at org.hibernate.validator.engine.ValidatorImpl.isCascadeRequired(ValidatorImpl.java:783) 
     at org.hibernate.validator.engine.ValidatorImpl.validateCascadedConstraints(ValidatorImpl.java:360) 
     at org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:216) 
     at org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:119) 
     at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:102) 
     at org.springframework.validation.DataBinder.validate(DataBinder.java:772) 
     at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.validateIfApplicable(ModelAttributeMethodProcessor.java:159) 
     at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:107) 
     at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77) 
     at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:157) 
     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:124) 
     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) 
     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953) 
     at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:844) 
     at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280) 
     at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254) 
     at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136) 
     at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341) 
     at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) 
     at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79) 
     at com.tdk.devices.support.context.DevicesSecurityFilter.doFilter(DevicesSecurityFilter.java:82) 

это являются библиотеки импортируемого:

<dependencies> 
     <dependency> 
      <groupId>antlr</groupId> 
      <artifactId>antlr</artifactId> 
      <version>2.7.7</version> 
     </dependency> 

     <dependency> 
      <groupId>aopalliance</groupId> 
      <artifactId>aopalliance</artifactId> 
      <version>1.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjweaver</artifactId> 
      <version>1.7.3</version> 
     </dependency> 

     <dependency> 
      <groupId>backport-util-concurrent</groupId> 
      <artifactId>backport-util-concurrent</artifactId> 
      <version>3.1</version> 
     </dependency> 

     <dependency> 
      <groupId>cglib</groupId> 
      <artifactId>cglib-nodep</artifactId> 
      <version>2.1_3</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-beanutils</groupId> 
      <artifactId>commons-beanutils</artifactId> 
      <version>1.7.0</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-codec</groupId> 
      <artifactId>commons-codec</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-collections</groupId> 
      <artifactId>commons-collections</artifactId> 
      <version>3.2</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-configuration</groupId> 
      <artifactId>commons-configuration</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.2.2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-digester3</artifactId> 
      <version>3.2</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-fileupload</groupId> 
      <artifactId>commons-fileupload</artifactId> 
      <version>1.2</version> 
      <!-- <version>1.3</version> --> 
     </dependency> 

     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.3.1</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
      <version>2.3</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-pool</groupId> 
      <artifactId>commons-pool</artifactId> 
      <version>1.3</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-validator</groupId> 
      <artifactId>commons-validator</artifactId> 
      <version>1.3.1</version> 
     </dependency> 

     <dependency> 
      <groupId>concurrent</groupId> 
      <artifactId>concurrent</artifactId> 
      <version>1.3.2</version> 
     </dependency> 

     <dependency> 
      <groupId>eu.cec</groupId> 
      <artifactId>databaseMessageSource</artifactId> 
      <version>1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>dom4j</groupId> 
      <artifactId>dom4j</artifactId> 
      <version>1.6.1</version> 
     </dependency> 


     <dependency> 
      <groupId>net.sf.ehcache</groupId> 
      <artifactId>ehcache</artifactId> 
      <version>2.8.0</version> 
     </dependency> 


     <dependency> 
      <groupId>org.owasp.esapi</groupId> 
      <artifactId>esapi</artifactId> 
      <version>2.0.1</version> 
     </dependency> 

     <dependency> 
      <groupId>net.sf.ezmorph</groupId> 
      <artifactId>ezmorph</artifactId> 
      <version>1.0.3</version> 
     </dependency> 

     <dependency> 
      <groupId>org.freemarker</groupId> 
      <artifactId>freemarker</artifactId> 
      <version>2.3.10</version> 
     </dependency> 

     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.3.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate</artifactId> 
      <version>3.2.6.ga</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-annotations</artifactId> 
      <version>3.3.1.GA</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-commons-annotations</artifactId> 
      <version>3.0.0.ga</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>3.3.2.GA</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-ehcache</artifactId> 
      <version>3.3.0.GA</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>3.3.2.GA</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>5.2.2.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator-annotation-processor</artifactId> 
      <version>5.2.2.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator-cdi</artifactId> 
      <version>5.2.2.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>com.lowagie</groupId> 
      <artifactId>itext</artifactId> 
      <version>2.1.7</version> 
     </dependency> 

     <dependency> 
      <groupId>com.itextpdf</groupId> 
      <artifactId>itextpdf</artifactId> 
      <version>5.3.0</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.media</groupId> 
      <artifactId>jai_codec</artifactId> 
      <version>1.1.2_01</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.media</groupId> 
      <artifactId>jai_core</artifactId> 
      <version>1.1.3</version> 
     </dependency> 

     <dependency> 
      <groupId>javassist</groupId> 
      <artifactId>javassist</artifactId> 
      <version>3.9.0.GA</version> 
     </dependency> 

     <dependency> 
      <groupId>caja</groupId> 
      <artifactId>json_simple</artifactId> 
      <version>r1</version> 
     </dependency> 

     <dependency> 
      <groupId>net.sf.json-lib</groupId> 
      <artifactId>json-lib</artifactId> 
      <version>2.1</version> 
      <classifier>jdk13</classifier> 
     </dependency> 

     <dependency> 
      <groupId>taglibs</groupId> 
      <artifactId>standard</artifactId> 
      <version>1.1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.5</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>net.sourceforge.jexcelapi</groupId> 
      <artifactId>jxl</artifactId> 
      <version>2.6.12</version> 
     </dependency> 

     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.14</version> 
     </dependency> 

     <dependency> 
      <groupId>mlibwrapper_jai</groupId> 
      <artifactId>mlibwrapper_jai</artifactId> 
      <version>1.0.0</version> 
     </dependency> 

     <dependency> 
      <groupId>odmg</groupId> 
      <artifactId>odmg</artifactId> 
      <version>3.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-expression</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>springext</groupId> 
      <artifactId>springext</artifactId> 
      <version>1.6.0-spring3-2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-instrument</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
      <version>4.0.1.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-core</artifactId> 
      <version>4.0.2.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-web</artifactId> 
      <version>4.0.2.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${spring.version}</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.taglibs</groupId> 
      <artifactId>taglibs-standard-compat</artifactId> 
      <version>1.2.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.taglibs</groupId> 
      <artifactId>taglibs-standard-impl</artifactId> 
      <version>1.2.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.taglibs</groupId> 
      <artifactId>taglibs-standard-jstlel</artifactId> 
      <version>1.2.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.taglibs</groupId> 
      <artifactId>taglibs-standard-spec</artifactId> 
      <version>1.2.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi</artifactId> 
      <version>3.14</version> 
     </dependency> 

     <dependency> 
      <groupId>au.com.bytecode</groupId> 
      <artifactId>opencsv</artifactId> 
      <version>2.4</version> 
     </dependency> 

     <dependency> 
      <groupId>net.sourceforge.javacsv</groupId> 
      <artifactId>javacsv</artifactId> 
      <version>2.0</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.mail</groupId> 
      <artifactId>javax.mail-api</artifactId> 
      <version>1.5.4</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
     </dependency> 




     <dependency> 
      <groupId>com.googlecode.json-simple</groupId> 
      <artifactId>json-simple</artifactId> 
      <version>1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.powermock</groupId> 
      <artifactId>powermock-module-junit4</artifactId> 
      <version>1.6.5</version> 
     </dependency>  
     <dependency> 
      <groupId>org.powermock</groupId> 
      <artifactId>powermock-api-mockito</artifactId> 
      <version>1.6.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.powermock.tests</groupId> 
      <artifactId>powermock-tests-utils</artifactId> 
      <version>1.6.5</version> 
     </dependency> 

     <dependency> 
      <groupId>org.powermock</groupId> 
      <artifactId>powermock-mockito-release-full</artifactId> 
      <version>1.5.4</version> 
      <scope>test</scope> 
      <type>pom</type> 
     </dependency> 

     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.8.9</version> 
     </dependency> 

     <dependency> 
      <groupId>com.oracle</groupId> 
      <artifactId>ojdbc14</artifactId> 
      <version>10.2.0.4</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.21</version> 
     </dependency> 

     <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>20.0</version> 
     </dependency> 




    </dependencies> 

Кажется, что это связано с гибернатом зависимостей файла pom.xml

+1

Эта [ссылка] (http://stackoverflow.com/a/23632603/4891892) может исправить вашу проблему –

+0

надеюсь, что это поможет [Ссылка] (http://stackoverflow.com/questions/11237879/cant-run-java-validation-jsr-303) – Onkar

+0

Кажется, что-то проблема с загрузкой классов. Вы пытались установить порядок классов, чтобы сначала загружать классы из своего веб-приложения, а затем из родительской загрузки классов? –

ответ

-1

Похоже, что doFilter() является абстрактным методом и ваш код вызывает его. Когда мы называем абстрактным методом, он бросает AbstractMethodError для получения дополнительной информации. here (docs)

0

Причина этой ошибки заключается в том, что Hibernate's in build PersistenceProviderResolver возвращает список всех PersistenceProviders в пути к классам. Так как Weblogic lib содержит JPA 1.0, он возвращает JPA2.0, а также провайдер персистентности JPA 1.0.

Для устранения этой ошибки вы можете использовать следующий подход.

Создать класс HibernatePersistenceProviderResolver в

public class HibernatePersistenceProviderResolver implements PersistenceProviderResolver { 

private volatile PersistenceProvider persistenceProvider = new HibernatePersistence(); 

public List getPersistenceProviders() { 
return Collections.singletonList(persistenceProvider); 
} 

public void clearCachedProviders() { 
persistenceProvider = new HibernatePersistence(); 
} 

public static void register() { 
PersistenceProviderResolverHolder 
.setPersistenceProviderResolver(new HibernatePersistenceProviderResolver()); 
} 
} 

Добавить класс слушателя вызвать метод, как зарегистрировать

public class HibernateContextListener implements ServletContextListener{ 

@Override 
public void contextInitialized(ServletContextEvent sce) { 
HibernatePersistenceProviderResolver.register(); 

} 

@Override 
public void contextDestroyed(ServletContextEvent sce) { 
// TODO Auto-generated method stub 

} 

} 

Добавить запись слушателя в вашем web.xml

+0

Также добавьте зависимости hibernate к ur pom.xml –