Java HttpConnection维护会话

Java HttpConnection维护会话,java,tomcat,java-me,session-cookies,httpconnection,Java,Tomcat,Java Me,Session Cookies,Httpconnection,我正在使用一些使用Rest架构在java中完成的web服务,我的客户端是一个使用HttpConnection检索数据的移动应用程序。为了控制身份验证和授权,我正在使用由@SessionScoped类管理的cookies,但是我不知道如何通过请求使会话持久化。问题基本上是,我将会话管理器注入到@RequestScope的其他服务中,但是由于会话没有持久化,我总是为@SessionScoped类检索不同的实例,从而删除我以前拥有的所有cookie或记录。查看请求头,我注意到cookie JSESSI

我正在使用一些使用Rest架构在java中完成的web服务,我的客户端是一个使用HttpConnection检索数据的移动应用程序。为了控制身份验证和授权,我正在使用由@SessionScoped类管理的cookies,但是我不知道如何通过请求使会话持久化。问题基本上是,我将会话管理器注入到@RequestScope的其他服务中,但是由于会话没有持久化,我总是为@SessionScoped类检索不同的实例,从而删除我以前拥有的所有cookie或记录。查看请求头,我注意到cookie JSESSIONID,我认为这是tomcat为了持久化会话而发送的,所以我已经尝试在下一个请求中发送相同的cookie,但是没有结果。

评论是正确的。。。要持久化会话,您只需在下一个请求中将JSESSIONID cookie发送回服务器,本例中的问题是JavaME中的HttpConnection只有setRequestProperty方法包含一个头值,现在如果您将相同的值设置两次,它将覆盖上一个值。因为我使用的是自定义cookie和JSessionID cookie,所以我按照以下方式设置它们:

connection.setRequestProperty("Cookie","sessionId="+ApplicationPreferences.getIn‌​stance().getSessionCookieHeader()); 
connection.setRequestProperty("Cookie","JSESSIONID="+ApplicationPreferences‌​.getInstance().getJavaSessionCookieHeader());
如果正确的方法是连接cookie字符串,然后将其全部设置为cookie头:

String myCookies="sessionId="+ApplicationPreferences.getInstance().getSessionCookieHead‌​er()+";"+"JSESSIONID="+ApplicationPreferences.getInstance().getJavaSessionCookieHeade‌​r(); 

当你说“HttpConnection”时,你实际上是指
HttpURLConnection
?如果是这样的话,请直说:不。。。不幸的是,我使用的是JavaME,这就是为什么在我的头中我接收到的是httpconnection,比如这个头:1,Set Cookie:JSESSIONID=C2j31psXI5bEhlXwXdormU3L;路径=/简单登录;安全您需要将其作为标题发送回,标题名为
Cookie
,值为
JSESSIONID=C2j31psXI5bEhlXwXdormU3L
。发现问题。。由于它是JavaME httpConnection,所以头的设置方式如下:connection.setRequestProperty(“Cookie”,“sessionId=“+ApplicationPreferences.getInstance().getSessionCookieHeader());connection.setRequestProperty(“Cookie”、“JSSessionId=“+ApplicationPreferences.getInstance().getJavaSessionCookieHeader());但是它会覆盖Cookie属性,如何添加多个同名的请求属性??