從客戶端,如果我想訪問一個Web服務,我就簡單地生成一個代理它使用wsimport
了。這是我的Web服務參考。我什麼時候需要使用@WebServiceRef?
凡則沒有註釋@WebServiceRef發揮作用?它是否僅用於服務器端,以獲得對託管在同一環境中的Web服務的注入引用?
從客戶端,如果我想訪問一個Web服務,我就簡單地生成一個代理它使用wsimport
了。這是我的Web服務參考。我什麼時候需要使用@WebServiceRef?
凡則沒有註釋@WebServiceRef發揮作用?它是否僅用於服務器端,以獲得對託管在同一環境中的Web服務的注入引用?
不一定,但它確實是一件取決於服務器的實現。例如要訪問一個遠程服務,它需要能夠訪問生成的客戶端和可選的WSDL文件和方案文件(按照慣例 應該在WEB-INF/wsdl
),使
public class HelloServlet extends HttpServlet {
@WebServiceRef(HelloMessengerService.class) // class with @WebServiceClient
private HelloMessenger port; // the SEI
...
}
的HelloMessengerService
類是存根和有所述@WebServiceClient
註釋具有 wsdlLocation
屬性(點到本地ö遠程WSDL文檔)。
但你可以有類似的東西
@WebServiceRef(wsdlLocation = "META-INF/wsdl/AnyService/Any.wsdl")
private HelloMessengerService service;
或
@WebServiceRef
public HelloMessengerService service;
如果你使用一個處理程序鏈來改變傳入和傳出的SOAP消息:
@WebServiceRef(HelloMessengerService.class)
@HandlerChain(file="handler-chain.xml")
private HelloMessenger port;
採用必須將@WebServiceRef
註釋應用於JAX-WS管理的客戶端,如Servlet,EJB,o另一個Web服務。
Java EE組件和「標準」Java類之間的區別在於Java EE組件被組裝到一個Java EE應用程序中,它們被驗證爲格式良好並符合Java EE規範,並且它們被部署到生產環境中,在那裏它們由Java EE服務器運行和管理。 [更多...](http://docs.oracle.com/javaee/6/tutorial/doc/bnaay.html#bnabb) – 2013-03-30 12:51:21
爲了增加Paul Vargas的答案,@WebServiceRef
註解是一個完成Java EE平臺向完全管理環境的演變的工具。想想這樣:
幾乎Java EE棧中的每個組件都可以通過某些方式注入,EJB,JSF託管的bean,CDI bean,@Resources
等。爲什麼不能注入web服務引用?使用此註釋注入一個web服務參考的能力,下面的準備注射的目標:
在java SE客戶端中並不需要它,因爲看起來像這樣:// @ WebServiceRef(wsdlLocation =「http:// localhost:8080/JaxWsExample/NewWebServiceService?wsdl」) \t私有靜態NewWebServiceService服務= new NewWebServiceService();並且它工作 – ACV 2015-10-26 09:46:51
但是在基於servlet的客戶端中,它是基本的(並且不需要實例化服務) – ACV 2015-10-26 09:51:55