我有一个在Tomcat 5上运行的完美工作的Web Java 1.5 Web应用程序。该应用程序依赖于它的会话,所以只要会话Cookie被传递,或者JSESSIONID到达结束时一切正常。像这样的上下文路径“; jsessionid = ...”
我现在必须在这样的环境中使我的应用程序工作:
由于我的应用程序已经过时且运行良好,我希望无需更改所有内容即可完成此项工作。我能够通过添加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
它有效。我刚刚在我的应用程序中添加了一个抽象层,一切正常。会议除外......
由于没有发送会话cookie,我在POST之间丢失了会话。我将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对应的会话?我想在将请求发送到我的“真实”应用程序之前处理请求的相同抽象层中执行此操作。
答案 0 :(得分:0)
我想我已经为此提出了一个解决方案......我已经实现了一个代理,它解析XML然后在JSESSIONID就位的情况下发出新请求。然后,我将该请求的响应写入实际请求的响应。
我制作了一个原型,它似乎正在起作用。它真的很难看,但至少我的应用程序并不知道其中任何一个实际发生了。