2009-01-06 75 views
2

我使用XFire作爲Spring Remoting的Web服務提供者。我正在使用AbstractHandler來驗證SOAP請求。這個想法是通過原始服務器的域名和API密鑰(a-la Google Maps)來確定請求。唯一的問題是我似乎無法找到從invoke()方法中獲取ServletRequest對象的方法,該方法只接受MessageContext對象。如何從XFire AbstractHandler的invoke()方法中獲取ServletRequest對象?

我能想到的唯一想法是使用過濾器並將請求對象存儲在ThreadLocal變量中,但我真的希望避免使用此解決方案。

任何想法?

乾杯

夏嘉曦

+0

爲什麼你需要嗎? – 2009-01-06 09:17:45

+0

我需要找出發起請求的服務器的主機名是什麼。 – 2009-01-06 09:22:36

回答

2

我沒有測試過這一點,但我有來源,翻版必究方便,所以我挖成類,看看這會很容易。從呼叫invoke內,你應該能夠得到ServletRequest用下面的代碼:

ServletRequest request = (ServletRequest) context.getProperty(org.codehaus.xfire.transport.http.XFireServletController.HTTP_SERVLET_REQUEST);