- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在JAX-WS 中实现多个Web Service间会话保持
在JAX-WS 中实现多个Service间会话保持
作者:刘嘉欣 南开大学信息学院 liujx@
TOC \o 1-3 \h \u Hyperlink \l _To在JAX-WS 中实现多个Service间会话保持 PageRef _To\h1
Hyperlink \l _To服务器端 PageRef _To\h1
Hyperlink \l _To客户端 PageRef _To\h2
Hyperlink \l _To1.在同一个Service的不同调用之间保持会话 PageRef _To\h2
Hyperlink \l _To2.在不同的Service调用时保持会话 PageRef _To\h3
本文不是JAX-WS的入门文档,如需了解JAX-WS,请参阅其它文章。
WebService为客户端与服务器沟通提供了非常良好的开发体验,由其在Java中体现尤为明显。JAX-WS是Java世界里一个非常优秀的WebService开发工具,通过采用JAX-WS,开发人员可以用非常简单的方式从客户端调用服务器开放的服务。
在采用C/S模式开发的时候,一个客户与服务器经常经过好几次的交互过程才能完成一笔交易或者是一个请求的完成。由于这几次交互过程是密切相关的,服务器在进行这些交互过程的某一个交互步骤时,往往需要了解上一次交互过程的处理结果,或者上几步的交互过程结果,这就需要在这几次交互过程中保持会话状态。
基于HTTP的应用开发中,要在多个调用之间保持会话状态,通常可以采用以下几种方式:
URL重写,把要传递的参数重写在URL中;
使用Cookie,把要传递的参数写入到客户端cookie中;
使用隐含表单,把要传递的参数写入到隐含的表单中;
使用Session,把要传递的参数保存在session对象中(其实Session机制基于cookie或者URL重写)。
上面几个方式有一个共同点:把要传递的参数保存在两个页面都能共享的对象中,前一个页面在这个对象中写入状态、后一个页面从这个对象中读取状态。特别是对于使用session方式,每个客户端在服务端都对应了一个sessionid,服务端维持了由sessionid标识的一系列session对象,而session对象用于保持共享的信息
上述保持会话状态的方式,较常用的是服务器Session技术。服务端程序通???调用session.setAttribute(key,value) 和 session.getAttribute(key) ,在多次交互过程中保持会话状态。另外,为了保持会话,客户端也要做一些相应的工作。下面将从两个方面讨论在使用JAX-WS的项目中,如何才能保持会话状态。
服务器端
如果要保持会话状态,首要一点就是要获得本次请求的session。下面假设我们的WebService名称为HelloService,Port名为HelloPort。代码如下:
package cn;
@javax.jws.WebService(targetNamespace = http://cn/, serviceName = HelloService, portName = HelloPort)
public class HelloDelegate {
@Resource
private WebServiceContext wsContext;
public void sayHello(){
MessageContext mc = wsContext.getMessageContext();
HttpSession session =
((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession();
}
}
首先,通过在class HelloDelegate上方通过@WebService标签,说明HelloDelegate为一个WebService,然后在类的内部声明一个WebServiceContext类型的引用,该引用即为WebService上下文类型。每一次的WebService调用,在服务器端都有一个对应的WebService上下文对象。该对象的获取是通过在引用上方标注@Resource得到的。
得到WebService上下文后,读取其中的消息上下文,该消息上下文中包装了HttpServletRequest对象,
您可能关注的文档
最近下载
- 登革热诊疗方案(2024年版).pdf VIP
- 人教版PEP小学英语六年级上册第一单元测试卷.pdf VIP
- 《装配式装修标准化模块化设计 》课件——模块七:装配式装修卫浴部品体系设计.ppt VIP
- 《全装饰住宅部品集成技术》课件——模块六:集成厨房部品体系设计装配式装修.pptx VIP
- 破晓剧本(红色剧目).docx VIP
- 《装配式装修标准化模块化设计 》课件——模块六:集成厨房部品体系设计装配式装修.ppt VIP
- 国际投资(第六版)课件 SolMcL_6e_ch10.ppt VIP
- 《装配式建筑装饰装修》习题-04收纳系统设计.docx VIP
- 装配式建筑装饰装修-标准化.pptx VIP
- 常用电子管参数及脚位5.doc VIP
文档评论(0)