Axis2调用webservice开启session管理

转载自:https://blog.csdn.net/zhangzeyuaaa/article/details/45394969

要开启Axis2的session机制,只需要设置相关属性:

EExpressClientWebServiceStub stub = new EExpressClientWebServiceStub(url);

Options options = stub._getServiceClient().getOptions();

options.setManageSession(true);

如果服务端是非Java平台,还需要设置如下属性:

options.setProperty(Constants.CUSTOM_COOKIE_ID, "ASP.NET_SessionId");

因为其他平台的cookieID跟Java平台通常是不一样的。

实际上webservice的session机制基于Http的session机制。

//***************************************************************************************************************************

转自:http://dingchd.iteye.com/blog/1847261

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的系统整个生命周期而存在 
 

猜你喜欢

转载自blog.csdn.net/u011496144/article/details/81187400