2012-02-14 335 views
0

我們在使用Spring 1.2.8和Hibernate 3.1的JSF 1.1 Web應用程序中使用OpenSessionInViewFilter。過濾器工作正常。現在,我們遷移到了Spring 3.1和Hibernate 4.0。我們正在收到以下錯誤。在將Spring 1.2.8/Hibernate 3.1遷移到Spring 3.1/Hibernate 4.0後,OpenSessionInViewFilter無法工作

javax.faces.el.EvaluationException: Cannot get value for expression '#{infobardisplay.projectList}' 
    at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:405) 
    at javax.faces.component.UISelectItems.getValue(UISelectItems.java:58) 
    at org.apache.myfaces.shared_impl.util.SelectItemsIterator.hasNext(SelectItemsIterator.java:105) 
    at org.apache.myfaces.shared_impl.renderkit.RendererUtils.internalGetSelectItemList(RendererUtils.java:450) 
    at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getSelectItemList(RendererUtils.java:428) 
    at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.internalRenderSelect(HtmlRendererUtils.java:294) 
    at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderMenu(HtmlRendererUtils.java:267) 
    at org.apache.myfaces.shared_impl.renderkit.html.HtmlMenuRendererBase.encodeEnd(HtmlMenuRendererBase.java:59) 
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:539) 
    at javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:498) 
    at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:366) 
    at org.apache.jsp.infobar_jsp._jspx_meth_h_005fselectOneMenu_005f0(infobar_jsp.java:244) 
    at org.apache.jsp.infobar_jsp._jspx_meth_h_005fform_005f0(infobar_jsp.java:152) 
    at org.apache.jsp.infobar_jsp._jspService(infobar_jsp.java:107) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:734) 
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:639) 
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:576) 
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) 
    at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:621) 
    at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99) 
    at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135) 
    at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760) 
    at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892) 
    at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462) 
    at org.apache.jsp.templates.tiles_005fw_jsp._jspx_meth_tiles_005finsert_005f1(tiles_005fw_jsp.java:725) 
    at org.apache.jsp.templates.tiles_005fw_jsp._jspx_meth_f_005fsubview_005f1(tiles_005fw_jsp.java:699) 
    at org.apache.jsp.templates.tiles_005fw_jsp._jspx_meth_f_005fview_005f0(tiles_005fw_jsp.java:564) 
    at org.apache.jsp.templates.tiles_005fw_jsp._jspService(tiles_005fw_jsp.java:207) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:734) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:541) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:479) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:407) 
    at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:419) 
    at org.apache.myfaces.tomahawk.application.jsp.JspTilesViewHandlerImpl.dispatch(JspTilesViewHandlerImpl.java:236) 
    at org.apache.myfaces.tomahawk.application.jsp.JspTilesViewHandlerImpl.renderView(JspTilesViewHandlerImpl.java:222) 
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41) 
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:140) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:100) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at net.assetool.webapp.filter.MessageFilter.doFilter(MessageFilter.java:49) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at net.assetool.webapp.filter.GZIPFilter.doFilter(GZIPFilter.java:49) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:42) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at net.assetool.webapp.filter.ActionFilter.doFilter(ActionFilter.java:126) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:119) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:292) 
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:108) 
    at org.acegisecurity.intercept.web.SecurityEnforcementFilter.doFilter(SecurityEnforcementFilter.java:197) 
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303) 
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:143) 
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303) 
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:220) 
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303) 
    at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:173) 
    at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:120) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) 
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139) 
    at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: javax.faces.el.EvaluationException: Exception getting value of property projectList of base of type : net.assetool.infobardisplay.InfoBarDisplay 
    at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:99) 
    at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:535) 
    at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145) 
    at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386) 
    ... 105 more 
Caused by: javax.faces.el.EvaluationException: Bean: net.assetool.infobardisplay.InfoBarDisplay, property: projectList 
    at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:461) 
    at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:85) 
    ... 108 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:457) 
    ... 109 more 
Caused by: org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is java.lang.NullPointerException 
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:428) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    at $Proxy55.getProjects(Unknown Source) 
    at net.assetool.infobardisplay.InfoBarDisplay.getProjectList(InfoBarDisplay.java:486) 
    ... 114 more 
Caused by: java.lang.NullPointerException 
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:342) 
    ... 121 more 

這是類

import javax.faces.context.FacesContext; 

import org.springframework.transaction.annotation.Transactional; 

//Default is read only 
@Transactional 
public class AuthorisationManagerSecurityImpl extends BaseManager implements 
    net.assetool.tabmenu.auth.Security { 
    public final static String PERMISSION_CALCULATION = "calculationPerm"; 

    public final static String PERMISSION_SBC = "navigateSbc"; 

    // TODO Javadoc 
    @Transactional(readOnly = false) 
    public boolean isUserInRole(String pRole) { 
    boolean isUserInRole = false; 
    FacesContext lContext = FacesContext.getCurrentInstance(); 
    AuthorisationManager authorisationManager = (AuthorisationManager) lContext 
     .getApplication().getVariableResolver().resolveVariable(lContext, 
      "authorisationManager"); 

    if (pRole.contains(PERMISSION_SBC)) { 
     Long currentProjectPk = authorisationManager.getCurrentProjectPk(); 
     if (currentProjectPk != null) { 
     isUserInRole = authorisationManager.hasUserProjectPermission(
      currentProjectPk, ""); 
     } 
    } else if (pRole.contains(PERMISSION_CALCULATION)) { 
     Long currentProjectPk = authorisationManager.getCurrentProjectPk(); 
     if (currentProjectPk != null) { 
     isUserInRole = true; 
     } 
    } else { 
     isUserInRole = authorisationManager.hasUserAnyPermission(pRole); 
    } 
    return isUserInRole; 
    } 

} 

TransactonManager:

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default"> 
    <property name="dataSource"> 
     <ref bean="dataSource"/> 
    </property> 
    <property name="mappingResources"> 
     <list> 
     </list> 
    </property> 
<property name="hibernateProperties"> 
     <props> 
     <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 

     <prop key="hibernate.connection.release_mode">auto</prop> 
     </props> 
    </property> 
    </bean> 

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default"> 
    <property name="sessionFactory"> 
     <ref local="sessionFactory"/> 
    </property> 
    </bean> 

我們沒有得到會話對象。這是如何造成的,我該如何解決這個問題?

+0

我正在看[org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:342)]源代碼(http://grepcode.com/file/repository.springsource.com/org .springframework/org.springframework.orm/3.1.0/org/springframework/orm/hibernate4/HibernateTransactionManager.java#342),它看起來像Spring不能創建轉換。嘗試提高日誌記錄級別並仔細閱讀日誌。也許轉換管理器配置不正確。 – 2012-02-14 12:56:22

+0

你好彼得,我編輯了我的職位與轉換經理的配置。 – neni 2012-02-14 13:03:33

+0

將級別INFO設置爲org.springframework.orm和org.hibernate,如果一切都啓動,請將其讀取。 – 2012-02-14 14:14:32

回答

1

該問題已通過更改彈簧庫得到解決。最初,我們使用的是spring-framework-3.1.0.RC2。 RC2版本中有一些缺陷。現在我們用新的spring-framework-3.1.0.RELEASE替換RC2庫。

相關問題