シンプルなアプリでセッションを複製するのに苦労しています。事は非常に基本的です。最初はこれを行うために 2 つの VM をセットアップしましたが、うまくいかなかったので、1 台のマシンでそれを行うかもしれないと考え、そうしました。
同じマシン上に 2 つのインスタンスを持つクラスターを作成しました。展開中に「可用性」チェックボックスをマークして、実際にセッションを複製します。
また、一部のOracle man Webページで提供されたコードに変更を加えました。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 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/web-app_2_5.xsd">
<distributable id="sessionDistribute" />
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
sun-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0
Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
<sun-web-app>
<session-config>
<session-manager persistence-type="replicated">
<manager-properties>
<property name="persistenceFrequency" value="web-method"/>
</manager-properties>
<store-properties>
<property name="persistenceScope" value="session"/>
</store-properties>
</session-manager>
<session-properties/>
<cookie-properties/>
</session-config>
</sun-web-app>
index.jsp
<%@page import="java.util.Enumeration"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Session Form</h1>
<%
if (request.getParameter("sessionName") != null && request.getParameter("sessionValue") != null) {
HttpSession httpSession = request.getSession();
httpSession.setAttribute(request.getParameter("sessionName"), request.getParameter("sessionValue"));
}
%>
<form action="index.jsp" method="POST">
your session name : <input type="text" name="sessionName" /> <br />
your session value : <input type="text" name="sessionValue" /> <br />
<input type="submit" />
</form>
<h1>Your Sessions</h1>
<%
Enumeration sessionNames = session.getAttributeNames();
while (sessionNames.hasMoreElements()) {
String mySessionName = sessionNames.nextElement().toString();
String mySession = request.getSession().getAttribute(mySessionName).toString();
out.print(mySessionName+ " --> "+mySession + " <br />");
}
%>
</body>
</html>
セッションに何かを投稿すると、2 番目のインスタンスでは発生しません。私はこれで2日目と戦っていて、アイデアが不足しています...
どんなヒントも素晴らしいでしょう。