`
endual
  • 浏览: 3519836 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Axis2 WebService之会话管理(Session) (转)

 
阅读更多

 

Axis2 WebService之会话管理(Session)

分类: 139人阅读 评论 (1) 收藏 举报

首先保证你已配置好Axis2。

 

实现同一个 WebService Session管理需要如下三步:

 

1. 使用 MessageContext ServiceContext获得与设置 key-value对。

2. 为要进行 Session管理的 WebService类所对应的 <service>元素添加一个 scope属性,并将该属性值设为 transportsession

3. 在客户端使用 setManageSession(true)打开 Session管理功能。

 

下面是一个在同一个 WebService类中管理 Session的例子

 

在Eclipse中新建一个webservice工程,如命名为:SessionWebService,建立一个 WebService 类,代码如下:

 

package  service;
import
 org.apache.axis2.context.ServiceContext;
import
 org.apache.axis2.context.MessageContext;
public   class
 LoginService
{
    
public   boolean
 login(String username, String password)
    {
        
if
("bill".equals(username) && "1234".equals(password))
        {
            
//   1 步:设置 key-value

            MessageContext mc = MessageContext.getCurrentMessageContext();
            ServiceContext sc = mc.getServiceContext();
            sc.setProperty("login", "
成功登录
");    
            
return   true
;
        }
        
else

        {
            
return   false ;
        }
    }
    
public
 String getLoginMsg()
    {
        
//   1 步:获得 key-value 对中的
value
        MessageContext mc = MessageContext.getCurrentMessageContext();
        ServiceContext sc = mc.getServiceContext();
        
return
 (String)sc.getProperty("login");    
    }
}

LoginService 类中有两个方法: login getLoginMsg ,如果 login 方法登录成功,会将“成功登录”字符串保存在 ServiceContext 对象中。如果在 login 方法返回 true 后调用 getLoginMsg 方法,就会返回“成功登录”。

下面是 LoginService 类的配置代码( services.xml ):

<!--   2 步:添加 scope 属性   -->
< service  name ="loginService"  scope ="transportsession">
    
< description >
        
登录服务
        
</ description >
    
< parameter  name ="ServiceClass">
        service.LoginService
        
</ parameter >
    
< messageReceivers >
        
< messageReceiver  mep ="http://www.w3.org/2004/08/wsdl/in-out"
            class
="org.apache.axis2.rpc.receivers.RPCMessageReceiver"   />
    
</ messageReceivers >
</ service >

 

使用如下的命令生成客户端使用的 stub 类:

%AXIS2_HOME%/bin/wsdl2java -uri http://localhost:8080/axis2/services/loginService?wsdl -p client -s -o stub

stub/src/client 目录中生成了一个 LoginServiceStub.java 类,在该类中找到如下的构造句方法:

public  LoginServiceStub(org.apache.axis2.context.ConfigurationContext configurationContext,
        java.lang.String targetEndpoint, 
boolean
 useSeparateListener)
        
throws
 org.apache.axis2.AxisFault 
{
    
 
    _serviceClient.getOptions().setSoapVersionURI(
                                 org.apache.axiom.soap.SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
}

在该方法中最后添加如下的代码:

//   3 步:打开客户端的 Session 管理功能
_serviceClient.getOptions().setManageSession( true );

 

 

下面的客户端代码使用 LoginServiceStub 对象访问了刚才建立的 WebService

package test;

import client.LoginServiceStub;

public class TestClient
{
 public static void main(String[] args)
 {
  try
  {
   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);
   }
  }
  catch (Exception e)
  {
       e.printStackTrace();
  }
 }
}

分享到:
评论

相关推荐

    Axis2 WebService 开发指南 技术文档 入门文档

    Axis WebService会话Session的管理 Axis用控制台Dos命令发布WebService Axis跨多个WebService管理Session Axis用Spring的JavaBean发布WebService Axis异步调用WebService Axis 的Module模块 Axis使用...

    axis2;WebService

    Axis WebService会话Session的管理 Axis用控制台Dos命令发布WebService Axis跨多个WebService管理Session Axis用Spring的JavaBean发布WebService Axis异步调用WebService Axis 的Module模块 Axis使用SoapMonitar监视...

    WebService大讲堂之Axis2系列教程

    Axis2是目前比较流行的WebService引擎。...本课程站在初学者角度介绍了Axis2的大多数常用的功能,例如,以多种方式编写和发布WebService、JAX-RPC、JAX-WS、复杂类型传输、WebService会话管理、Axis2模块等

    axis2_WebService_开发指南

    Axis WebService 会话Session 的管理 Axis 用控制台Dos 命令发布WebService Axis 跨多个WebService 管理Session Axis 用Spring 的JavaBean 发布WebService Axis 异步调用WebService Axis 的Module 模块 Axis 使用...

    axis2_webservice

    AxisWebService会话Session的管理 Axis用控制台Dos命令发布WebService Axis跨多个WebService管理Session Axis用Spring的JavaBean发布WebService Axis异步调用WebService Axis的Module模块 Axis使用SoapMonitar监视...

    WebService大讲堂之Axis2

    WebService大讲堂之Axis2(5):会话(Session)管理 .................................................................................... 20 WebService大讲堂之Axis2(6):跨服务会话(Session)管理 ...............

    Axis2教程 包含描述目录的内容

    WebService大讲堂之Axis2系列教程 1. 用POJO实现0配置的WebService 2. 复合类型数据的传递 3. 使用services.xml文件发布WebService 4. 二进制文件传输 5. 会话(Session)管理 6. 跨服务会话(Session)管理 ...

    axis2-1.4.1及教程

    5):会话(Session)管理 6):跨服务会话(Session)管理 7):将Spring的装配JavaBean发布成 8):异步调用WebService 9):编写Axis2模块(Module) 10):使用soapmonitor模块监视soap请求与响应消息

    axis2 教程_个人备用文档

    会话(Session)管理 6. 跨服务会话(Session)管理 7. 将Spring的装配JavaBean发布成WebService 8. 异步调用WebService 9. 编写Axis2模块(Module) 10. 使用soapmonitor模块监视soap请求与响应消息

    编程入门_Eclipse教程

    3.1.3. WebService会话Session的管理 24 3.1.4. 用Spring创建的JavaBean发布成WebService 29 3.1.5. 异步调用WebService 32 4. Eclipse中安装 Lomboz 35 4.1. 持久化对象与OID 35 4.1.1. 对持久化对象的要求 35 ...

    AXIS2大讲堂文档

    文档1 pojo实现0配置 文档2 符合数据类型 ...文档5 会话管理 文档6 跨越session管理 文档7 spring的bean发布为webservice 文档8 异步调用webservice 文档9 编写axis模块 文档10 使用moniter监视器

Global site tag (gtag.js) - Google Analytics