当前位置: 首页 > 知识库问答 >
问题:

Hazelcast HTTP会话复制不会复制任何内容

卫君博
2023-03-14

我有一些hazelcast http会话复制特性的问题。

我有些问题:

  • 在同一个tomcat集群中有没有可能有hazelcast封装的应用程序和非hazelcast封装的应用程序?
  • 带有hazelcast的应用程序应该是可分发的?(通过像其他方法一样添加它的web.xml)
  • 部署应用程序的Tomcat不应该在集群中?是否可以在同一tomcat中使用标准tomcat会话复制将其他应用程序群集化?

编辑:

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("Get Method. Check Session...");
    HttpSession session = req.getSession(false);
    if (session==null) {
        System.out.println("User with null session, generating one...");
        session = req.getSession(true);
        if (session==null)
            System.out.println("Session can not be generated.");
    }
    if (session!=null)
        System.out.println("Received GET request from session " + session.getId());
}

将标准hazelcast.xml放入WEB-INF文件夹(与hazelcast 3.2.5的ZIP归档打包到bin文件夹中的hazelcast.xml完全相同)

将hazelcast过滤器添加到web.xml中,与正式文档中的示例完全相同

在正式文档中,我没有找到任何其他需要的html" target="_blank">配置(http://hazelcast.org/docs/latest/manual/html/httpsessionclustering.html),我满足了所有要求。

当两个节点启动时,它们都加入集群,我在两侧都有以下日志:

INFO: [192.168.0.68]:4701 [dev] [3.2.5]
Members [2] {
    Member [192.168.0.68]:4701 this
    Member [192.168.0.49]:4701
}

当我发出第一个请求时,在第一个节点上得到了logs:Get方法。检查会话...会话为空的用户,正在生成一个...收到来自会话HZ2F779DFA402A406E9ACCA3E0298B37F5的GET请求

并且此请求之后的每个请求都将生成以下日志:

Get方法。检查会话...

会话为空的用户,正在生成一个...

收到会话HZB89D6CDC1CC94FDEBC82019BAAA9022E的GET请求

会话更改的原因?我做错了什么?

这个用例太简单了,可能我遗漏了什么,但我想不出来。还有其他的先决条件?

使用的软件:

java 1.7.0_25

共有1个答案

夏侯昊明
2023-03-14

你能发布一些日志吗,特别是像这样的东西:

Members [2] {
    Member [192.168.1.100]:5701 this
    Member [192.168.1.100]:5702
}

关于您的问题:

  • 在同一个tomcat集群中有没有可能有hazelcast封装的应用程序和非hazelcast封装的应用程序?
    null
  • 部署应用程序的Tomcat不应该在集群中?是否可以在同一tomcat中使用标准tomcat会话复制将其他应用程序群集化?

我不认为这应该是一个问题,只要没有港口冲突。

 类似资料:
  • 一旦我们开始使用这个,Vaadin就会崩溃并停止工作。当为了调试而用内存中的映射替换外部缓存时,它会再次工作。 这似乎是由引起的,因为它将存储为会话属性。是,Javadoc显示: VaadinSession中的所有内容都应该是可序列化的,以确保与使用序列化持久化会话数据的方案兼容。 注意:我们也有一个使用Vaadin8的应用程序版本,这里也发生了同样的事情。这个问题似乎是由Vaadin Sprin

  • 背景:我在tomcat上部署了一个javaee webapp,它使用基于表单的身份验证。当web服务器接收到登录请求时,它将该请求发送到一个专用的身份验证服务,该服务验证用户登录(用户id和密码)。验证成功后,用户的会话将在web服务器中维护。 问题:我在这里编写了一个简单的webpp源代码,以模拟该场景。成功登录后,当前实例无效,并创建新实例。对于post登录页面的每个请求,都会验证会话。设置一

  • 问题内容: 我正在本地计算机上的Tomcat 7上设置群集/复制,以评估它是否可与我的环境/代码库一起使用。 建立 我在不同端口上运行的同级目录中有两个相同的tomcat服务器。我已经在其他两个端口上监听了httpd,并作为VirtualHosts连接到了两个tomcat实例。我可以在配置的端口上访问两种环境并与之交互。一切都按预期进行。 Tomcat服务器在server.xml中启用了集群功能:

  • 我使用redisson在运行tomcat V8.5的3个tomcat吊舱中复制spring应用程序的tomcat会话。我还在同一个Kubernetes集群中部署了Redis。下面是我的tomcat context.xml配置 我的redisson配置如下: 当我在所有pod上运行我的应用程序和负载平衡请求时,它会为发送到不同pod的每个请求创建一个新的JSESSIONID cookie 这应该验证

  • 我试图使用Spring Cloud的Zuul、Eureka和我自己的服务实现微服务架构。我有多个具有UI和服务的服务,每个服务都可以使用x509安全性对用户进行身份验证。现在我想把祖尔放在那些服务机构的前面。由于Zuul无法将客户端证书转发到后端,我认为下一个最好的方法是在Zuul的前门对用户进行身份验证,然后使用Spring会话在后端服务中复制他们的身份验证状态。我遵循了Dave Syer的教程

  • 我正在尝试使用Hazelcast分布式缓存来复制带有Spring Boot&Spring Security的HTTP会话,但无法进行设置(不过,简单的缓存复制工作良好,我已经通过在一个应用程序节点的map中设置一些值并尝试在其他集群节点上获得它来验证了这一点)。 我已经通过网页上的东西,但不幸的是,我无法设置这一点。应用程序在集群中运行时,在一个节点上登录后,我没有在其他节点上获取会话对象(我正在