日期:2014-05-18  浏览次数:20524 次

关于urlconnection发送请求时,session的保存问题
各位好,请教一个session保存的问题。
我通过url.openconnection来请求一个servlet,每次执行的时候,都会重新生成一个session。
有没有什么替代的方法,让他不重新生成session,并且能够接收请求返回的字节流。谢谢。
我用的服务器是oc4j

------解决方案--------------------
沙发
------解决方案--------------------
兄弟,你的问题好像很难。
要解决你的问题,必须自己实现http协议。因为你说的这个session是建立在Http的基础上的。
所以如果你用url.openconnection来请求一个servlet的时候,你说每次都产生了一个Session,说得不好听点,你连根据都没有,你收到的都是字节流,你怎么知道前后两个字节流不是同一个Session?因为鸡都没有,哪里有蛋啊,赫赫。

http://www.ietf.org/rfc/rfc2068.txt
第43页,160页,161页。

如果服务器端已经实现了,那么你就要模拟Http的client给服务器发请求。这些请求头里面包含了是不是同一个Connection的信息。如果是使用同一个Connection的话,那么就可以维持一个Session,这个Session是后来抽象出来的东西,Http的协议里没有规定。所以要每次使用同一个连接的话,那么你必须使用一个能像服务器发送原始请求的类,说白了,你要是实现HttpServletRequest,HttpServletResponse接口。同时你不实现HttpSession接口的话,永远不能说,你产生了一个新Session。
嗬嗬,无聊中,一起研究研究吧。