OpenSessionInViewFilter не работает после миграции Spring 1.2.8 / Hibernate 3.1 в Spring 3.1 / Hibernate 4.0 - PullRequest
0 голосов
/ 14 февраля 2012

Мы используем OpenSessionInViewFilter в нашем веб-приложении JSF 1.1, которое использует Spring 1.2.8 и Hibernate 3.1. Фильтр работал нормально. Теперь мы перешли на Spring 3.1 и Hibernate 4.0. Мы получаем следующую ошибку.

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>

Мы не получаем объект сеанса. Как это вызвано и как я могу решить это?

1 Ответ

1 голос
/ 15 февраля 2012

Проблема была решена путем изменения пружинных библиотек.Изначально мы использовали spring-framework-3.1.0.RC2.В выпуске RC2 есть несколько ошибок.Теперь мы заменили библиотеки RC2 на новый spring-framework-3.1.0.RELEASE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...