2010-01-03 73 views
1

我們有一個基於Tomcat/Hibernate/SQL Server堆棧構建的web應用程序。從webservice獲取HTTP會話

Web應用程序的一部分是使用 工具包(Flare的前身是Prefuse)構建的網絡地圖。網絡地圖數據通過web服務調用來獲取,比如getData()。這個調用是由Flare應用程序檢索它需要顯示的XML數據。 web服務本身已經使用Apache CXF開發。

我想弄清楚如何在指定爲web服務的方法內獲得HTTP會話。我需要這個,因爲我需要維護跨客戶端(Flare應用程序)Web服務請求的服務器端數據。

我是否需要使用基本servlet API(知道正在使用CXF servlet)來獲取HTTP會話?或者在CXF級別有API支持嗎?

的Web服務本身的Tomcat 6

回答

2

這實際上是JAX-WS規範的一部分運行。你可以做

@Resource 
WebServiceContext ctx; 

.... 

ctx.getMessageContext().get(MessageContext.SERVLET_REQUEST) 

得到從中可以做到與會話或任何東西的ServletRequest對象。

注意:默認情況下,JAX-WS客戶端不會維護會話cookie。你必須設置它們來保持會話:

((BindingProvider)proxy).getRequestContext() 
    .put(BindingProvider.SESSION_MAINTAIN_PROPERTY, "true"); 
+0

謝謝你做了這個工作。讚賞 – user179056 2010-02-05 11:36:35