zoukankan      html  css  js  c++  java
  • 五、WebService会话Session的管理

    1、新建Session的WebService测试代码,代码很简单。就是记录用户登录的状态信息,放在MessageContext的ServiceContext中。代码如下:

    代码

    这里保存Session信息的主要是通过MessageContext这个上下文来获取ServiceContext的上下文,然后通过setProperty来保存session的信息,通过getProperty来获取session信息。

    Session的作用可以在使用WebService登录的时候,保存用户的登录状态或是会话消息。但是使用session需要设置发布Service的时候,设置WebService的作用域。作用域默认是request,它还有另外三个值,分别是:application、soapsession、transportsession;我们可以选择使用transportsession和application分别实现同一个WebService类和跨WebService类的会话管理。

    2、使用axis2的工具生成aar文件,并发布LoginService服务。

    clip_image002

    关于这里发布LoginService的步骤就不一一介绍,上面已经有说过了。当你用这个步骤发布WebService的时候,你可以打开压缩文件的方式aar文件(其实不一定要用aar文件,只是官方推荐的aar,jar文件也是可以的),在META-INF目录下有一个services.xml文件,看到它的<service>这个标签,没有设置scope属性。

    clip_image004

    scope默认的是request,我们得修改services.xml的内容。

    修改后services.xml内容如下:

    代码

    这个地方的scope是关键,如果这里不设置的话session是无法存放信息。

    3、用控制台Dos命令发布WebService

    这个是手工打包,也就是我们经常用的jar命令

    首先我们得需要一个services.xml文件,文件内容如上面的。

    <service name="LoginService" scope="transportsession">

    name是当前发布WebService的名称,scope是会话作用域。保存在Session中就要用这个transportsession这个作用域。

    <parameter name="ServiceClass">com.hoo.service.LoginService</parameter>

    这个是当前Service的类路径,包名+类名

    <messageReceivers>

    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>

    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

    </messageReceivers>

    这个应该是参数和返回值信息的解析类,in-only是输入也就是参数,in-out是输出也就是返回值。

    A、 首先,我们在C盘下新建一个sessionService的目录,然后将上面的services.xml文件中的ServiceClass的类的class文件copy到这个目录下,注意要带上package目录,然后在sessionService目录下新建一个META-INF将上面的services.xml文件放到这个目录下

    B、 然后运行cmd进入控制台,进入sessionService这个目录,键入命令如下:

    jar cvf service.aar .

    clip_image006

    service.aar是打包后的文件名称,.是指代当前目录

    如果你不懂jar命令,你可以输入jar会有命令语法的提示

    clip_image008

    进入sessionService这个目录中,你可以看到service.aar文件就有了。然后将这个文件copy到axis2的WEB-INF目录下的services目录中,也就是

    [tomcat-home]\webapps\axis2\WEB-INF\services

    然后可以通过:http://localhost:8080/axis2/services/listServices

    就可以查看刚才发布的服务了。

    这样就完成手工发布打包发布WebService了

    C、 编写WebService客户端的请求代码

    代码

    执行后,结果如下:

    true

    admin#登陆成功

    上面要说明的是options.setManageSession(true);是开启对Session管理的支持




  • 作者:hoojo
    出处:
    blog:http://blog.csdn.net/IBM_hoojo
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权所有,转载请注明出处 本文出自:
分享道版权所有,欢迎转载,转载请注明出处,谢谢
收藏
关注
评论
查看全文
  • 相关阅读:
    网上找的一个读取wave文件的代码片段
    用c++简单实现智能指针(转)
    剖析ifstream打开含中文路径名文件失败的原因(转)
    我是一个程序员
    .NET简谈委“.NET技术”托链 狼人:
    Entity Framework “.NET技术”4.1 推荐英文教程 狼人:
    Azure和Bing Maps API示“.NET技术”例经验分享 狼人:
    .NET中的异步编程“.NET技术”:使用F#简化异步编程 狼人:
    C#类类型“.NET技术” 狼人:
    Silverlight 应“.NET技术”用整合 狼人:
  • 原文地址:https://www.cnblogs.com/hoojo/p/1985699.html
  • Copyright © 2011-2022 走看看