`
dingchd
  • 浏览: 15686 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

axis2的session管理

阅读更多
webservice本身提倡无状态的,为支持某些需要维持状态的应用,axis2提供了session管理。
构建一个带session管理的service,需要做一下事情:
1、客户端的stub初始化需要出传入configcontext
     ConfigurationContext configContext =
ConfigurationContextFactory.createConfigurationContextFromFileSystem(base, base+File.separator+"conf"+File.separator+"axis2.xml");
     stub = new MyServiceStub(configContext);
2、客户端需要设置
     stub._getServiceClient().getOptions().setManageSession(true);
     stub是用wsdl2java工具生成的客户端调用类
3、在service发布的services.xml文件中声明session所属的范围
     <service name="foo" scope=" soapsession">
     </service>
4、服务端axis2.xml配置configcontexttimeoutinterval
     <parameter name="ConfigContextTimeoutInterval">5000</parameter>
     参数代表过期间隔
    客户端每次持有的stub(配置了context)请求后台,第一次请求时会建立session,同时记录该session的configcontext时间戳,每次该stub请求时会比对时间戳是否处于有效,若超时则标记为过期,清除,抛异常给客户端
5、服务端服务实现类实现按需要init()和destroy()方法
     init()方法是建立session创建时自动触发的
     destroy()方法是用户持过期的sessionid向后台请求时触发的,axis2不会去主动定期扫描过期session,但每次响应服务请求时去检查是否过期,当发现是过期的时候触发destroy方法,同时抛异常,该异常也会被客户端捕获


如果stub初始化时只给定endpoint,没有指定configcontext,则后台每次接受时都认为是新的session,然后每次响应请求时都将过期的session清除掉。即是说只有关联了configcontext才会真正起到预期的效果,由axis2的层次知道,当configcontext过期(timeout)时,他下面的所有context都将timeout。

每个session对应一个服务实现类的实例

默认的服务 scope为request session,即pojo模式的服务势必是request 的,每次请求后实例(服务实现类)马上被清楚

如果要使用客户端的cookies实现session,service的scope可以设置成transportsession

还有一种scope是application的,他将会随axis2的系统整个生命周期而存在

参考文章:http://www.developer.com/services/article.php/10928_3620661_2/Axis2-Session-Management.htm


分享到:
评论

相关推荐

    axis2+spring webservice

    描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合,以便通过Spring来管理和控制Web服务的生命周期,同时利用Axis2的Web服务处理能力。此外,“以及session的管理”...

    axis2教程及案例

    本教程旨在全面介绍Axis2的安装、开发、部署,以及如何进行session管理和SOAP模块监控,通过实战案例帮助你深入理解和应用Axis2。 1. **Axis2安装**:首先,你需要下载适合你操作系统的Axis2版本,然后解压到指定...

    axis2入门及简单例子

    * Session 管理:Axis2 提供了 Session 管理机制,使得开发者可以轻松地管理 Session。 * SoapMonitar 监视:Axis2 提供了 SoapMonitar 监视机制,使得开发者可以监视 WebService 的请求和响应信息。 * 异步调用:...

    axis2 webservice开发指南.pdf

    Session管理** - **单个WebService**:通过配置文件`axis2.xml`中`sessionManager`元素来管理会话。 - **跨多个WebService**:使用统一的会话管理机制,确保不同服务间共享会话数据。 ##### **3. 异步调用** ...

    在自己的项目中利用axis2+spring发布webservice与客户端调用包括session

    标题中的“在自己的项目中利用axis2+spring发布webservice与客户端调用包括session”指出的是一个关于在实际项目开发中如何使用Axis2和Spring框架来发布Web服务,并且涉及了Web服务客户端调用以及会话(session)...

    axis2;WebService

    **WebService会话Session管理** - Axis2支持在不同Web服务间管理会话,这对于需要跨服务共享状态的应用程序非常重要。 **控制台命令发布WebService** - 通过命令行工具,如`wsdl2java`和`java2wsdl`,可以在没有...

    axis2_WebService_开发指南

    此外,Axis2还提供了辅助工具来发布和调用WebService,以及管理WebService会话(Session)。会话管理在处理有状态的服务时尤为重要。 在某些情况下,可能会需要使用控制台命令(如Dos命令)来发布WebService,Axis2...

    webservice6 跨越session管理

    本文将深入探讨在Axis2框架下实现跨服务Session管理的原理和步骤。 首先,我们要理解什么是Session。在Web开发中,Session是服务器用来存储特定用户会话信息的一种机制。通常,Session用于跟踪用户状态,比如用户...

    WebService大讲堂之Axis2系列教程

    4. **WebService会话管理**:会话管理在保持用户状态和服务交互连续性方面至关重要,课程会介绍如何在Axis2中实现和维护会话。 5. **Axis2模块**:模块是Axis2中的一个重要概念,它们允许你扩展Axis2的功能,比如...

    axis2-WebService-开发指南.docx

    Axis2 提供了 Session 管理机制,可以管理多个 WebService 的会话,实现了会话的复用和共享。 7. Axis2 的异步调用: Axis2 支持异步调用,可以实现异步调用 WebService,提高系统的性能和可扩展性。 8. Axis2 ...

    Axis2.X教程

    Axis2 提供了对 WebService 会话(Session)的管理,允许在多个请求之间保持状态。 #### 3.3 跨多个 WebService 管理 Session 通过特定机制,如使用 Cookie 或 SOAP Header,可以在多个 WebService 间共享 Session...

    axis2新手教程

    ### Axis2新手教程:深入解析Service配置与Session管理 #### 一、Axis2中的Service配置详解 在Axis2中,`service.xml`是定义服务的关键配置文件之一,它用于描述和配置一个或多个Web服务。下面我们将通过示例来...

Global site tag (gtag.js) - Google Analytics