Session 使用Axis2生成的存根无法维护RESTful服务和客户端之间的会话

Session 使用Axis2生成的存根无法维护RESTful服务和客户端之间的会话,session,rest,axis2,Session,Rest,Axis2,我创建了一个Web服务,并在服务器和客户端上启用了会话管理。在我通过在serviceStub.java中添加第三行代码在客户机上启用REST之前,它可以正常工作。 会话管理停止工作 // session management _serviceClient.getOptions().setManageSession(true); _serviceClient.engageModule("addressing"); // enable REST _serviceClient.getOption

我创建了一个Web服务,并在服务器和客户端上启用了会话管理。在我通过在serviceStub.java中添加第三行代码在客户机上启用REST之前,它可以正常工作。 会话管理停止工作

// session management 
_serviceClient.getOptions().setManageSession(true); 
_serviceClient.engageModule("addressing");

// enable REST
_serviceClient.getOptions().setProperty(Constants.Configuration.ENABLE_REST,Constants.VALUE_TRUE);
同样,如果注释位于代码的最后一行,则会重新启用会话管理

那是一只虫子还是我遗漏了什么

我正在使用:

  • Axis2 1.5.4
  • Tomcat 7.0.8

RESTful web服务的会话管理仅在传输级别工作,而不是基于soap的web服务

因此,为了对RESTful Web设备启用会话管理,应该执行以下操作

客户端存根中代码使用与上面相同的代码,除了关于使用寻址模块的行应该被注释或删除,因为REST不支持WS-addressing)

在services.xml中web服务描述文件 在范围参数中添加“transportsession

<service name="MyService" scope="transportsession"
    class="myPackage.service.MyServiceClass">

别忘了重新部署web服务

就这样

<service name="MyService" scope="transportsession"
    class="myPackage.service.MyServiceClass">