2

シンプルなアプリでセッションを複製するのに苦労しています。事は非常に基本的です。最初はこれを行うために 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日目と戦っていて、アイデアが不足しています...

どんなヒントも素晴らしいでしょう。

4

0 に答える 0