【发布时间】:2016-01-28 12:11:51
【问题描述】:
我在 WebLogic 服务器 10.3.6.0 上使用 Liferay 6.2 GA4 门户,我发现了一个烦人的问题。
- 我以 UserA 身份登录。
- 显示将数据存储到 portlet 会话的 portlet。
- 我退出了。
- 我以 UserB 身份登录。
- 显示将数据存储到 portlet 会话的同一 portlet。
- Portlet 显示的是 UserA 而不是 UserB 的数据。
我通过 ext-plugin 向 com.liferay.portal.kernel.servlet.PortletSessionListenerManager 和 com.liferay.portal.kernel.servlet.PortletSessionTracker 添加了一些调试日志消息,发现传递给 PortletSessionTracker.add 方法的会话 (sessionId) 与传递给 PortletSessionTracker.add 方法的会话 (sessionId) 不同strong>无效方法。请参阅下面的日志消息:
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>
有人知道可能是什么问题吗?感谢您的任何想法或帮助。
【问题讨论】:
-
几年没用LR了。它保留了一个会话,该会话(通过 cookie?)保留在客户端上。 LR 会话被设计成有状态的。会话管道可能会被重用长达半小时(服务器中有一个超时设置)。这个组合可能是你正在运行的。 LR 管理员通过菜单交换用户没有这个问题。在 LR 和 Weblogic 中查找“保持会话”超时。