weblogic上的Liferay不会使portlet会话无效

时间:2016-01-28 12:11:51

标签: session liferay weblogic

我在WebLogic服务器10.3.6.0上使用Liferay 6.2 GA4门户,我发现了一个恼人的问题。

  1. 我以UserA身份登录。
  2. 显示将数据存储到portlet会话的portlet。
  3. 我退出了。
  4. 我以UserB身份登录。
  5. 显示将数据存储到portlet会话的相同portlet。
  6. Portlet 显示UserA的数据,而不是UserB
  7. 我通过ext-plugin将一些调试日志消息添加到com.liferay.portal.kernel.servlet.PortletSessionListenerManagercom.liferay.portal.kernel.servlet.PortletSessionTracker,并发现传递给 PortletSessionTracker.add 方法的会话(sessionId)与一个传递给无效方法。请参阅以下日志消息:

    2016-01-28 10:38:34,191 [PortletSessionTracker:40] Adding session with id=4s6HmE3LdwWuUdOilk7-ytJLqJh1LnCiTKzoeH9YVSBM2USJuxU9
    2016-01-28 10:40:38,875 [PortletSessionListenerManager:187] Destroying session with id=S4qHmPDaSTLkwkmEo6gDLt4W0U-siGlU_GNa1LJelXTtQvSaRyEd
    2016-01-28 10:40:38,875 [PortletSessionTracker:73] Removing session with id=S4qHmPDaSTLkwkmEo6gDLt4W0U-siGlU_GNa1LJelXTtQvSaRyEd
    
    未调用com.liferay.portal.kernel.servlet.PortletSessionTracker#invalidate中的

    session.invalidate();
    portlet中没有错误,因为在Tomcat上它可以正常工作。在Tomcat session.invalidate(); 被调用。

    weblogic.xml中:

    <weblogic-web-app
            xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.2/weblogic-web-app.xsd"
            >
        <jsp-descriptor>
            <keepgenerated>true</keepgenerated>
            <page-check-seconds>60</page-check-seconds>
        </jsp-descriptor>
    
        <session-descriptor>
            <debug-enabled>true</debug-enabled>
            <persistent-store-type>replicated_if_clustered</persistent-store-type>
            <cookie-secure>true</cookie-secure>
        </session-descriptor>
    
        <container-descriptor>
            <filter-dispatched-requests-enabled>false</filter-dispatched-requests-enabled>
            <prefer-application-packages>
                <package-name>antlr.*</package-name>
                <package-name>com.ctc.wstx.*</package-name>
                <package-name>org.antlr.*</package-name>
                <package-name>org.apache.commons.lang.*</package-name>
                <package-name>org.mozilla.*</package-name>
                <package-name>org.xmlpull.*</package-name>
            </prefer-application-packages>
            <optimistic-serialization>true</optimistic-serialization>
            <show-archived-real-path-enabled>true</show-archived-real-path-enabled>
        </container-descriptor>
    
        <context-root>/</context-root>
    
        <wl-dispatch-policy>ejbtp_liferay</wl-dispatch-policy>
    
    </weblogic-web-app>
    

    有人知道可能是什么问题吗?感谢您的任何想法或帮助。

1 个答案:

答案 0 :(得分:0)

问题有一个棘手的原因。我们的客户希望会话ID cookie具有不同的名称 - 而不是默认的 jsessionid 。我在liferay门户战争中设置了修改后的jsessionid,但没有在主题和portlet应用程序等其他战争中设置。因此,这些战争使用默认的jsessionid,而门户使用修改后的战争。默认值为添加方法,修改后的方法为无效方法。

因此解决方案是在portlet和主题大战中修改会话ID cookie。