我不太确定我想要实现的要求的可行性,但情况如下:
- 我创建了一个充当代理的 Servlet。它接收 RESTful 调用,然后调用远程服务器(节点)上的另一个 RESTful 服务。
- 转发是通过
HTTPClient
实现的,而不是通过请求调度程序实现的。我基本上向远程服务器发出一个新的 HTTP 请求。 - 当第一个服务器(代理服务器)收到调用时,请求 (
HttpServletRequest
) 就有一个与其关联的 session 。HTTPSession
的isNew()
属性为 false。 - 当调用被转接并且远程服务器收到调用时, session 将成为一个全新的 session 。
我基本上也在尝试找到一种将 session 转发到远程服务器的方法。
更准确地说:
是否可以简单地从 HttpServletRequest
获取 session 并将其放入新创建的 HTTP 请求的 session 中(通过 HTTPClient
)?
最佳答案
这取决于您的远程 WS 如何维护 session 。例如,如果它使用cookie(Tomcat 在其他技术中这样做),那么转发传入的 header 应该可以帮助您实现这一点(确保您提到您接受cookie,但我认为 HTTPClient 默认情况下会这样做)。 现在,如果它基于 URL 中的参数,那么您应该尝试重现该行为。
关于java - Servlet 充当代理 : How to forward the session?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9642546/