我有一个基于Spring Web模型 – 视图 – 控制器(MVC)框架的项目. Spring Web模型 – 视图 – 控制器(MVC)框架的版本是3.2.8.
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)
这是导入的库:
weavercglibcglib-nodepfigurationfigurationwasp.esapicope>testcope>
.sourceforge.jexcelapispring-beansspring-expressionspring-ormecurityecurity-configecurityecurity-coreecurityecurity-webcope>testcope>
.sourceforge.javacsvcope>testcope>
slf4j-api
它似乎与pom.xml文件的hibernate依赖关系有关
最佳答案
这个错误背后的原因是,Hibernate在构建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中添加侦听器条目
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。