WebService大讲堂之Axis2(6):跨服务会话(Session)管理 - 编程入门网
lass">
service.LoginService
</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>
<!-- 第2步:添加scope属性,并设置属性值为application -->
<service name="searchService" scope="application">
<description>
搜索服务
</description>
<parameter name="ServiceClass">
service.SearchService
</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>
</serviceGroup>
WebService大讲堂之Axis2(6):跨服务会话(Session)管理(3)时间:2011-08-13 BlogJava 哈佛校训第3步与《WebService大讲堂之Axis2(5):会话(Session)管理》一文中介绍的方法类似。 下面是使用两个stub类的对象实例访问上面实现的两个WebService的客户端代码: LoginServiceStub stub = new LoginServiceStub(); LoginServiceStub.Login login = new LoginServiceStub.Login(); login.setUsername("bill"); login.setPassword("1234"); if(stub.login(login).local_return) { System.out.println(stub.getLoginMsg().local_return); SearchServiceStub searchStub = new SearchServiceStub(); SearchServiceStub.FindByName fbn = new SearchServiceStub.FindByName(); fbn.setName("abc"); System.out.println(searchStub.findByName(fbn).local_return); } 在执行上面的代码后,将输出如下的信息: 成功登录 找到的数据<abc> 读者可以将scope属性值改成transportsession,看看会输出什么! 实际上,Axis2的会话管理也是通过Cookie实现的,与Web应用中的Session管理类似。如果读者使用C# 访问支持会话(在同一个服务中的会话管理)的WebService,需要指定一个CookieContainer对象,代码 如下:
如果是访问跨服务的支持会话的WebService,则不需要指定CookieContainer对象,代码如下:
如果读者使用delphi(本文使用的是delphi2009,其他的delphi版本请读者自行测试)调用支持会话 的WebService时有一些差别。经笔者测试,使用delphi调用WebService,将scope属性值设为 transportsession和application都可以实现跨服务的会话管理,这一点和Java与C#不同,Java和C#必须 将scope属性值设为application才支持跨服务会话管理。在delphi中不需要象C#指定 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |