我在SAP NetWeaver 7.3 EHP 1(JEE5認證)上,我爲現有的WSDL生成了一個Web服務框架。這個Web服務中的所有方法都是非阻塞的,因此用@Oneway
註釋。該服務本身工作得很好。JAX-WS - 將WebServiceContext注入@WebService,只有@Oneway方法
雖然我也需要訪問一個注入的WebServiceContext
,這是麻煩開始的地方。我可以很好地注入上下文,但每次調用都只會在服務器特定的NPE或ISE中結束。我有些可以理解,因爲非阻塞調用是由SAP的JAX-WS實現異步執行的。但是,我試圖通過查看JAX-WS規範來驗證此行爲。現在我要麼是盲人,要麼規範沒有明確說明WebServiceContext
不能用於非阻塞網絡方法。實際上,在最新版規範的第5.3章中,@Oneway
並沒有提及一次。主要描述是
的javax.xml.ws.WebServiceContext接口使得能夠爲一個 端點實現對象和潛在的任何其他對象 共享它的執行上下文來訪問關於所述被服務 請求信息。 調用 其中一個Web服務方法之外的組件調用 WebServiceContext上的任何方法的結果未定義。如果一個實現檢測到這種用法,應該拋出一個 java.lang.IllegalStateException異常。
我想這一點是「請求服務」的定義。在異步處理SOAP操作時,HTTP請求已完成。但是,再次,我沒有訪問上下文「之外的一個調用,如果它的Web服務方法」。我很困惑...
你們有沒有人知道我是否應該被允許在非阻塞網絡方法中訪問WebServiceContext
?謝謝!