|
我们的环境是nginx+2台tomcat实现负载,memcached实现session同步。我的tomcat,context.xml配置文件如下。
tomcat1的context.xml配置
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.12.13.202:11211,n2:10.12.13.203:11211"
failoverNodes="n1"
lockingMode="all"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
copyCollectionsForSerialization="false"
/>
tomat2的context.xml配置
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.12.13.202:11211,n2:10.12.13.203:11211"
failoverNodes="n2"
lockingMode="all"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
copyCollectionsForSerialization="false"
/>
使用jsp网上写的jsp测试
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println (request.getLocalAddr() + " : " + request.getLocalPort ()+"<br>");%>
<%
out.println ("<br> ID " + session.getId ()+"<br>");
String dataName = request.getParameter ("dataName");
if (dataName != null && dataName.length () > 0) {
String dataValue = request.getParameter ("dataValue");
session.setAttribute (dataName, dataValue);
}
out.print ("<b>Session list</b>");
Enumeration e = session.getAttributeNames ();
while (e.hasMoreElements ()) {
String name = (String)e.nextElement ();
String value = session.getAttribute (name).toString ();
out.println ( name + " = " + value+"<br>");
System.out.println ( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
The time on desktop 20 is:<%= new java.util.Date() %>
测试是正常,session不变
但是正常程序测试的时候报如下错
十二月 02, 2015 5:41:57 下午 de.javakaffee.web.msm.RequestTrackingHostValve invoke
详细: >>>>>> Request starting: POST /gazelle/common/getToken (requestedSessionId 245c55e4-d946-4ac7-ac98-0c93f46d99d7) ==================
十二月 02, 2015 5:41:57 下午 de.javakaffee.web.msm.SessionIdFormat createSessionId
详细: Creating new session id with orig id 'ping' and memcached id 'd946-4ac7-ac98-0c93f46d99d7'.
十二月 02, 2015 5:41:57 下午 de.javakaffee.web.msm.NodeAvailabilityCache updateIsNodeAvailable
详细: CacheLoader returned node availability 'false' for node 'd946-4ac7-ac98-0c93f46d99d7'.
十二月 02, 2015 5:41:57 下午 de.javakaffee.web.msm.MemcachedNodesManager canHitMemcached
详细: The node d946-4ac7-ac98-0c93f46d99d7 is not available, therefore 245c55e4-d946-4ac7-ac98-0c93f46d99d7 cannot be loaded from this memcached.
十二月 02, 2015 5:41:57 下午 org.apache.shiro.session.mgt.AbstractValidatingSessionManager enableSessionValidation
信息: Enabling session validation scheduler...
十二月 02, 2015 5:41:57 下午 de.javakaffee.web.msm.MemcachedSessionService backupSession
详细: No session found in session map for 946a7c99-da61-42a3-b619-fa64129b26d3 |
|