我的设置如下如何避免创建会话?
- 主应用程序的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