我有一個運行在Tomcat 5上的完全有效的Web Java 1.5 Web應用程序。應用程序依賴於它的會話,因此只要會話Cookie被傳遞,或JSESSIONID出現在上下文結尾路徑是這樣「; JSESSIONID = ...」如何使用JSESSIONID設置特定的會話?
我現在必須讓我的應用程序的工作,在工作原理是這樣的環境:
- 我的應用程序的每個請求都將是一個POST到只有一個URL,沒有任何參數(所以我不能在上下文路徑中設置jsessionid)。
- 不允許重定向,我必須返回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
和它的作品。我剛添加了一個抽象層到我的應用程序,並且一切正常。除會議...
由於沒有會話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的會話?我希望在將它發送給我的「真實」應用程序之前處理請求的同一抽象層中執行此操作。
Cookie在請求標題中設置。如果你給出的約束不允許你保持同一個會話,他們將不得不改變。 – EJP
相信我,我對此有過激烈的爭論。他們的平臺不能改變。無論是作爲客戶還是失去他們。 – manugarciac