如何使用 JSESSIONID 设置特定的 session?
How can I set an specific session with the JSESSIONID?
我有一个完美运行的 web Java 1.5 web 应用程序,它在 Tomcat 5 上运行。该应用程序依赖于它的 session,所以只要 Session Cookie 被四处传递,或者 JSESSIONID 像这样出现在上下文路径的末尾 ";jsessionid=..."
我现在必须让我的应用程序在这样的环境中运行:
- 对我的应用程序的每个请求都将是一个 POST 到一个 URL,没有任何参数(所以我将无法设置 jsessionid上下文路径)。
- 不允许重定向,我的响应必须 return HTTP 状态 200。
- POST 的正文是一个特定的 XML(我可以在那里添加自定义参数)。
因为我的应用程序很旧而且运行良好,所以我想在不必更改所有内容的情况下完成这项工作。通过在 XML 主体中添加参数之一,我能够使单个 URL 工作,应该执行的实际 URL,然后将响应转发给那个 URL,还在那里附加其余参数。这是一个例子:
POST http://server.com/singleUrl.do
<xml>
<parameters>url=realPage.do&param1=value1&param2=value2</parameters>
</xml>
然后我转发给:
http://server.com/realPage.do?param1=value1¶m2=value2
并且有效。我刚刚在我的应用程序中添加了一个抽象层,一切正常。除了 session...
由于从未发送过 session cookie,因此我在 POST 之间丢失了 session。我将 JSESSIONID 添加为 XML 中的自定义参数之一,如下所示:
<xml>
<parameters>url=realPage.do&param1=value1&param2=value2&jsessionid=ABC121312</parameters>
</xml>
并尝试转发至:
http://server.com/realPage.do;jsessionid=ABC121312?param1=value1¶m2=value2
但是没有用。同样的事情,重定向,工作。但是当然,在我的新要求中不允许重定向。
最后,我的问题。我如何设置对应于该 JSESSIONID 的 session?我想在将请求发送到我的 "real" 应用程序之前在处理请求的同一抽象层中执行此操作。
我想我已经想出了一个解决方案...我已经实现了一个代理,它解析 XML 然后发出一个新的请求,JSESSIONID 就位。然后我把那个请求的响应写在真实请求的响应上。
我制作了一个原型,它似乎可以正常工作。这真的很难看,但至少我的应用程序不知道这一切正在发生。
我有一个完美运行的 web Java 1.5 web 应用程序,它在 Tomcat 5 上运行。该应用程序依赖于它的 session,所以只要 Session Cookie 被四处传递,或者 JSESSIONID 像这样出现在上下文路径的末尾 ";jsessionid=..."
我现在必须让我的应用程序在这样的环境中运行:
- 对我的应用程序的每个请求都将是一个 POST 到一个 URL,没有任何参数(所以我将无法设置 jsessionid上下文路径)。
- 不允许重定向,我的响应必须 return HTTP 状态 200。
- POST 的正文是一个特定的 XML(我可以在那里添加自定义参数)。
因为我的应用程序很旧而且运行良好,所以我想在不必更改所有内容的情况下完成这项工作。通过在 XML 主体中添加参数之一,我能够使单个 URL 工作,应该执行的实际 URL,然后将响应转发给那个 URL,还在那里附加其余参数。这是一个例子:
POST http://server.com/singleUrl.do
<xml>
<parameters>url=realPage.do&param1=value1&param2=value2</parameters>
</xml>
然后我转发给:
http://server.com/realPage.do?param1=value1¶m2=value2
并且有效。我刚刚在我的应用程序中添加了一个抽象层,一切正常。除了 session...
由于从未发送过 session cookie,因此我在 POST 之间丢失了 session。我将 JSESSIONID 添加为 XML 中的自定义参数之一,如下所示:
<xml>
<parameters>url=realPage.do&param1=value1&param2=value2&jsessionid=ABC121312</parameters>
</xml>
并尝试转发至:
http://server.com/realPage.do;jsessionid=ABC121312?param1=value1¶m2=value2
但是没有用。同样的事情,重定向,工作。但是当然,在我的新要求中不允许重定向。
最后,我的问题。我如何设置对应于该 JSESSIONID 的 session?我想在将请求发送到我的 "real" 应用程序之前在处理请求的同一抽象层中执行此操作。
我想我已经想出了一个解决方案...我已经实现了一个代理,它解析 XML 然后发出一个新的请求,JSESSIONID 就位。然后我把那个请求的响应写在真实请求的响应上。
我制作了一个原型,它似乎可以正常工作。这真的很难看,但至少我的应用程序不知道这一切正在发生。