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

时间:2011-05-18 10:31:13

标签: session rest axis2

我在服务器和客户端上创建了一个Web服务并启用了会话管理。它工作很快,直到我通过在serviceStub.java中添加第3行代码在客户端上启用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

1 个答案:

答案 0 :(得分:1)

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

因此,为了启用RESTful Web服务的会话管理,应该完成以下操作。

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

// enable session management 
_serviceClient.getOptions().setManageSession(true); 

// enable REST
_serviceClient.getOptions().setProperty(Constants.Configuration.ENABLE_REST,Constants.VALUE_TRUE);

在services.xml中 Web服务desciption文件 在范围参数

中添加“ transportsession
<service name="MyService" scope="transportsession"
    class="myPackage.service.MyServiceClass">

不要忘记重新部署Web服务。

就是这样!