【问题标题】:Refresh HTTP session in another server programmatically in Java/Weblogic在 Java/Weblogic 中以编程方式刷新另一台服务器中的 HTTP 会话
【发布时间】:2014-03-01 19:59:06
【问题描述】:

好的,我有

  1. 浏览器连接到的服务器 1,以及由 Weblogic 自动处理 HTTP 会话的位置。
  2. 从第三个服务器接收事件的服务器 2
  3. 用户/浏览器处于空闲状态,即。未对服务器 1 进行任何调用,因此 HTTP 会话在指定的超时期限后超时

服务器 2 收到某些事件时,我需要为 服务器 1 上的特定用户刷新 HTTP 会话。

我想出的唯一方法是:

  1. 在服务器 1 中,将会话 ID 存储在服务器 2 可以访问的位置
  2. 当服务器 2 接收到刷新会话的事件时,使用会话 cookie 向服务器 1(一些虚拟资源)发起 HTTP 调用,模拟来自浏览器的调用。

但我不想进行 HTTP 调用(也没有实际测试过),因为它还需要在防火墙等中进行更改,而且总的来说 感觉很笨拙。相反,我想从服务器 2 向服务器 1 发送一条消息(例如使用 JMS),然后使用一些 API 来刷新会话。但是我还没有发现这样的 API 存在。

那么,您知道我可以使用一个 API 来使用会话 ID 刷新会话吗,或者您能想到其他方法吗?

【问题讨论】:

    标签: java session jakarta-ee weblogic


    【解决方案1】:

    您可以通过以下方式做到这一点:
    1.使用服务器端推送,这将反过来从2.Atmosphere调用http到服务器1。例如。
    2. 在服务器 2 中有一个调度程序,它将检查该事件并向服务器 1 发送请求。

    【讨论】:

    • 谢谢,但 HTTP 调用是我不想做的。我对原始帖子进行了一些修改,希望现在更清楚,如果以前没有的话。
    • 如果不是 HTTP,请尝试从 server2 更新数据库表。 Server1 应该能够访问同一个表,如果您使用的是 Oracle 数据库服务器,您可以使用 DatabaseChangeNotification 数据库推送。
    • 我的意思是每当 server2 中发生事件时,它应该更新 db 中的某个字段,server1 应该监控哪些字段。一旦该标志发生更改,您就可以刷新用户的会话 ID。
    • 即便如此,我仍然需要执行 HTTP 调用来刷新会话。将信息从服务器 2 传送到服务器 1 不是问题,我想避免仅仅为了刷新会话而进行 HTTP 调用。
    • 不。你不需要。如果您再次阅读我的评论,我谈到了使用调度程序或类似工具检查数据库字段是否有来自 server1 的任何更改。
    猜你喜欢
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2012-01-11
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多