2011-05-18 43 views
0

我在服务器和客户端上都创建了Web服务并启用会话管理。它工作得很好,直到我通过在serviceStub.java中添加第三行代码来在客户端上启用REST。 会话管理停止工作。使用Axis2生成的存根无法维护RESTful服务和客户端之间的会话

// 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的REST风格的Web服务7.0.8

回答

1

会话管理在传输层只能而非基于SOAP的Web服务。

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

客户存根代码使用相同的代码与上述不同的是线接合左右寻址模块应该被注释或除去REST不支持的WS-Addressing)

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

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

services.xml中 Web服务应将描述文件 在范围参数添加 'transportsession'

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

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

就是这样!

相关问题