2011-05-18 42 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服務。

就是這樣!

相關問題