session - 在 Tomcat 6 中复制 session 属性时遇到问题

标签 session tomcat session-replication

我已经为 Tomcat 6 配置了内存中 session 复制。我还通过 isapi_redirector 使用 IIS 7(我知道,我知道)和 AJP 连接器。集群工作正常,我能够在示例 war 中使用 SessionExample 复制 session 属性。问题是我无法在我的自定义应用程序中执行相同的操作。我已将可分发标记添加到测试集群中两台服务器上的 web.xml 文件中。但是,我在日志中没有看到任何消息提及发送到集群的属性(我看到它们用于 SessionExample)。从示例中我可以在我的应用中看到的唯一主要区别:

  1. 示例 war 使用 servlet 2.5。我仍然需要使用 2.4。
  2. 我的应用程序使用 SSO 并要求用户登录。
  3. 该应用程序是一个门户应用程序。

此外,在应用程序的代码中,我在属性中设置了一个简单的字符串,所以没什么特别的。

所以,我想知道是否有人有一些技巧可以使它正常工作?

谢谢

这是我的 server.xml 中的集群部分:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
    channelSendOptions="6">
    <Manager className="org.apache.catalina.ha.session.DeltaManager" 
            expireSessionsOnShutdown="false" 
            notifyListenersOnReplication="true"/>
    <Channel className="org.apache.catalina.tribes.group.GroupChannel">
        <Membership className="org.apache.catalina.tribes.membership.McastService" 
            address="228.0.0.104" 
            port="45564" 
            frequency="500" 
            dropTime="10000"/>
        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
            address="auto" 
            port="4000" 
            autoBind="100" 
            selectorTimeout="7000" 
            maxThreads="6"
            timeout="15000"/>
        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
            <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"
                timeout="70000"/>
        </Sender>
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    </Channel>
    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
        filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
    <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 
        tempDir="/apache-tomcat-6.0.37/war-deploy/war-temp/" 
        deployDir="/apache-tomcat-6.0.37/webapps/" 
        watchDir="/apache-tomcat-6.0.37/war-deploy/war-listen/" 
        watchEnabled="true"/>
    <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

最佳答案

对不起。我发现了问题。我期待在日志中看到有关创建 session 属性的消息。我没有意识到示例项目有一个将消息输出到日志的 session 监听器。我以为这只是我设置的日志级别。

感谢所有阅读这篇文章的人。

关于session - 在 Tomcat 6 中复制 session 属性时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21213421/

相关文章:

tomcat - 复制 session 是否需要启用粘性 session ?

tomcat - 在不使 session 属性可序列化的情况下,是否可以在 tomcat 中进行 session 复制?

session 复制中的 Tomcat 集群

java - 如何在Servlet中完全消失session?

java - 非法尝试将集合与两个打开的 session 相关联

eclipse - 部署 war 时的 Jar 问题

java - 使用 getResourceAsStream 时发现错误 "Method May Fail to Close Stream"

c# - 单值数据的 session 正在从数据库获取,而双值数据的 session 未到来

PHP session 与类

java - tomcat6: 无法创建用于登录 linux 的目录