我在WebLogic服务器10.3.6.0上使用Liferay 6.2 GA4门户,我发现了一个恼人的问题。
我通过ext-plugin将一些调试日志消息添加到com.liferay.portal.kernel.servlet.PortletSessionListenerManager
和com.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>
有人知道可能是什么问题吗?感谢您的任何想法或帮助。
答案 0 :(得分:0)
问题有一个棘手的原因。我们的客户希望会话ID cookie具有不同的名称 - 而不是默认的 jsessionid 。我在liferay门户战争中设置了修改后的jsessionid,但没有在主题和portlet应用程序等其他战争中设置。因此,这些战争使用默认的jsessionid,而门户使用修改后的战争。默认值为添加方法,修改后的方法为无效方法。
因此解决方案是在portlet和主题大战中修改会话ID cookie。