我的設置如下如何避免創建會話?
- 主應用程序的servlet訪問下/對myApp/mainServlet/
- ,增加了安全性頭(用戶名,密碼),以SOAP調用從未來的一個小「手工製作」肥皂代理客戶
- 一個Flex客戶端,通過這種肥皂代理
Flex客戶端已經被設置時,會話ID會談主要的servlet(通過BlazeDS的接口),併發送一些SOAP調用給第三方它首先與t談話他主要的servlet,它返回一個HTTP頭,如「Set-Cookie:」JSESSION:某事; Path =/myApp「,然後將這個cookie發送到服務器,以通知客戶端與哪個會話相關聯
問題是,小肥皂代理也返回一個cookie與會話id通過它進行調用) - 然後Flex客戶端在與主servlet通話時使用這些cookie。這些其他會話ID是未知的,然後當然沒有任何工作...
我不想要會話cookie從肥皂代理回來了,我已經驗證問題將通過講述一個Apache前端去除所有「設置Cookie」頭從SOAP代理來這樣做來解決。不幸的是(由於一些設置限制),這不是我可以投入生產的一種方式,所以我需要以編程方式修復它。
我怎樣才能讓這個servlet不嘗試設置任何會話ID?我相信我所看到的告訴碼頭(應用服務器)不發送會話ID的方法,但是,這也將影響主servlet的這樣做,以及能力,也無法移植。
代理Servlet是一個非常基本的春天控制器(只是實現接口),所以基本上只是一個裸骨的servlet。
感謝您的回答,基里爾!順便說一句 - 你是否暗示說會話總是在Java Servlet容器中創建的?我在問,因爲我不確定規格說什麼。誰負責進行會議? – oligofren 2012-04-29 08:37:18
@oligofren您可以使用'responce.getSession()'創建會話。你說你有一個「SOAP代理」,它是如何代理的,以及在哪裏? SOAP響應來自的實際位置是否可以設置cookie? – jmruc 2012-04-29 09:11:07
好點!我從來沒有想到,但是:是的,它重定向到Axis服務(在Glassfish上運行),當然可以設置會話ID。一些試驗用裸露的骨頭的servlet(在http://www.sonatype.com/books/mvnex-book/mvnex-examples.zip CH-簡單的Web /簡單Web應用程序代碼)後,我現在可以看到一個基本的servlet沒有返回一個JSESSIONID - 除非我做了一個getSession()。所以你確實是對的 - 會話cookie來自服務器,我代理請求! – oligofren 2012-04-29 10:01:49