“当前请求不是portlet请求”错误在使用Spring 3.0.5的WebLogic上运行Liferay portlet并且使用请求范围bean运行aop

时间:2014-02-20 20:20:03

标签: java spring liferay weblogic spring-portlet-mvc

有没有人看到并解决了这个错误?

Caused by: java.lang.IllegalStateException: Current request is not a portlet request            at org.springframework.web.portlet.context.PortletApplicationContextUtils.currentRequestAttributes(PortletApplicationContextUtils.java:194)
        at org.springframework.web.portlet.context.PortletApplicationContextUtils.access$0(PortletApplicationContextUtils.java:191)
        at org.springframework.web.portlet.context.PortletApplicationContextUtils$WebRequestObjectFactory.getObject(PortletApplicationContextUtils.java:238)
        at org.springframework.web.portlet.context.PortletApplicationContextUtils$WebRequestObjectFactory.getObject(PortletApplicationContextUtils.java:1)
        at org.springframework.beans.factory.support.AutowireUtils$ObjectFactoryDelegatingInvocationHandler.invoke(AutowireUtils.java:178)
        at $Proxy866.getAttribute(Unknown Source)
        at org.ihc.mh.proxy.portlet.factory.PortletProxyInfoFactory$PortletSessionScope.getAttribute(PortletProxyInfoFactory.java:198)
        at org.ihc.mh.proxy.portlet.factory.PortletProxyInfoFactory$ProxyInfoImpl.getUnitNumber(PortletProxyInfoFactory.java:52)
        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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
        at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
        at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at $Proxy790.getUnitNumber(Unknown Source)
        at org.ihc.mh.proxy.service.focus.impl.FocusServiceImpl.getFocusPerson(FocusServiceImpl.java:95)
        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.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:145)

使用“请求”范围定义bean,例如:

<bean id="focusPerson" scope="request" factory-bean="dataViewFocusService" factory-method="getFocusPerson">
   <constructor-arg ref="proxyInfo" />
   <aop:scoped-proxy proxy-target-class="false" />
</bean>

然而,当我在调试器中捕获调用以设置请求属性时,它似乎来自WebLogic而不是Spring,正如我所期望的那样:

  [1] org.springframework.web.context.request.RequestContextHolder.setRequestAttributes (RequestContextHolder.java:84)
  [2] org.springframework.web.context.request.RequestContextHolder.setRequestAttributes (RequestContextHolder.java:73)
  [3] org.springframework.web.context.request.RequestContextListener.requestInitialized (RequestContextListener.java:61)
  [4] com.liferay.portal.kernel.servlet.SecurePluginContextListener.requestInitialized (SecurePluginContextListener.java:189)
  [5] weblogic.servlet.internal.EventsManager.notifyRequestLifetimeEvent (EventsManager.java:333)
  [6] weblogic.servlet.internal.RequestEventsFilter.doFilter (RequestEventsFilter.java:25)
  [7] weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:56)
  [8] weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet (RequestDispatcherImpl.java:524)
  [9] weblogic.servlet.internal.RequestDispatcherImpl.include (RequestDispatcherImpl.java:444)
  [10] com.liferay.portlet.InvokerPortletImpl.invoke (InvokerPortletImpl.java:602)
  [11] com.liferay.portlet.InvokerPortletImpl.invokeRender (InvokerPortletImpl.java:675)
  [12] com.liferay.portlet.InvokerPortletImpl.render (InvokerPortletImpl.java:382)
  [13] jsp_servlet._html._portal.__render_portlet._jspService (render_portlet.jsp:788)

这些已经在Glassfish下正常工作了一段时间。在WebLogic上,我们收到此错误。在管理Spring请求上下文时,它看起来像是WebLogic和portlet之间的冲突,但我不确定如何解决它。

由于

0 个答案:

没有答案