JAX-WS 註釋
“基於 XML 的 Web Service 的 Java API”(JAX-WS)通過使用註釋來指定與 Web Service 實現相關聯的元數據以及簡化 Web Service 的開發。註釋描述如何將服務器端的服務實現作爲 Web Service 來訪問或者客戶端的 Java 類如何訪問 Web Service。
JAX-WS 編程標準支持將具有用於定義服務端點應用程序的元數據的 Java 類作爲 Web Service 來註釋以及註釋客戶機可以如何訪問 Web Service。JAX-WS 支持使用基於 Metadata Facility for the Java Programming Language(Java 規範請求(JSR)175)規範和“用於 Java 平臺的 Web Service 元數據”(JSR 181)規範的註釋,還可以使用由 JAX-WS 2.0(JSR 224)規範定義的註釋(包括 JAXB 註釋)。通過使用符合 JSR 181 標準的註釋,可以簡單地註釋服務實現類或服務接口,並且現在將應用程序作爲 Web Service 來啓用。通過在 Java 源代碼中使用註釋可以簡化 Web Service 的開發和部署,因爲會定義一些通常從部署描述符文件和 WSDL 文件中獲得的附加信息,或者會將元數據從 XML 和 WSDL 映射至源工件中。
使用註釋來配置綁定、處理程序鏈、端口類型的集合名稱、服務以及其他 WSDL 參數。註釋用於將 Java 映射至 WSDL 和模式,以及在運行時控制 JAX-WS 運行時處理和響應 Web Service 調用的方式。
- 諸如 Java 類、枚舉或接口等類型
- 方法
- 用於表示 Java 類中局部實例變量的字段
- Java 方法中的參數
javax.jws.WebService |
當實現 Web Service 時,@WebService 註釋標記 Java 類;實現 Web Service 接口時,標記服務端點接口(SEI)。
要點: • 實現 Web Service 的 Java 類必須指定 @WebService 或 @WebServiceProvider 註釋。不能同時提供這兩種註釋。 此註釋適用於客戶機/服務器 SEI 或 JavaBeans 端點的服務器端點實現類。 • 如果註釋通過 endpointInterface 屬性引用了某個 SEI,那麼還必須使用 @WebService 註釋來註釋該 SEI。 • 請參閱適用於使用 @WebService 註釋的類的方法的規則,以瞭解更多信息。 |
|
javax.jws.WebMethod |
@WebMethod 註釋表示作爲一項 Web Service 操作的方法。
將此註釋應用於客戶機或服務器服務端點接口(SEI)上的方法,或者應用於 JavaBeans 端點的服務器端點實現類。 要點: • 僅支持在使用 @WebService 註釋來註釋的類上使用 @WebMethod 註釋。 |
|
javax.jws.Oneway |
@Oneway 註釋將一個方法表示爲只有輸入消息而沒有輸出消息的 Web Service 單向操作。
將此註釋應用於客戶機或服務器服務端點接口(SEI)上的方法,或者應用於 JavaBeans 端點的服務器端點實現類。 |
|
javax.jws.WebParam |
@WebParam 註釋用於定製從單個參數至 Web Service 消息部件和 XML 元素的映射。
將此註釋應用於客戶機或服務器服務端點接口(SEI)上的方法,或者應用於 JavaBeans 端點的服務器端點實現類。 |
|
javax.jws.WebResult |
@WebResult 註釋用於定製從返回值至 WSDL 部件或 XML 元素的映射。
將此註釋應用於客戶機或服務器服務端點接口(SEI)上的方法,或者應用於 JavaBeans 端點的服務器端點實現類。 |
|
javax.jws.HandlerChain |
@HandlerChain 註釋用於使 Web Service 與外部定義的處理程序鏈相關聯。
只能通過對 SEI 或實現類使用 @HandlerChain 註釋來配置服務器端的處理程序。 但是可以使用多種方法來配置客戶端的處理程序。可以通過對生成的服務類或者 SEI 使用 @HandlerChain 註釋來配置客戶端的處理程序。此外,可以按程序在服務上註冊您自己的 HandlerResolver 接口實現,或者按程序在綁定對象上設置處理程序鏈。 |
|
javax.jws.SOAPBinding |
@SOAPBinding 註釋指定 Web Service 與 SOAP 消息協議之間的映射。
將此註釋應用於客戶機或服務器服務端點接口(SEI)上的類型或方法,或者應用於 JavaBeans 端點的服務器端點實現類。 方法級別的註釋僅限於它可以指定的對象,僅當style 屬性爲 DOCUMENT 時才使用該註釋。如果未指定方法級別的註釋,那麼將使用類型的@SOAPBinding 行爲。 |
|
javax.xml.ws.BindingType |
@BindingType 註釋指定在發佈此類型的端點時要使用的綁定。
將此註釋應用於 JavaBeans 端點或提供程序端點的服務器端點實現類。 要點: • 可以通過將該註釋的值指定爲javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_MTOM_BINDING或javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING來對 Java bean 端點實現類使用 @BindingType 註釋以啓用 MTOM。 |
|
javax.xml.ws.RequestWrapper |
@RequestWrapper 註釋提供 JAXB 生成的請求包裝器 bean、元素名稱和名稱空間,用於對在運行時使用的請求包裝器 bean 進行序列化和反序列化。
從 Java 對象開始時,此元素用來解決 document literal 方式下的重載衝突。在這種情況下,只有 className 屬性是必需的。 將此註釋應用於客戶機或服務器服務端點接口(SEI)上的方法,或者應用於 JavaBeans 端點的服務器端點實現類。 |
|
javax.xml.ws.ResponseWrapper |
@ResponseWrapper 註釋提供 JAXB 生成的響應包裝器 bean、元素名稱和名稱空間,用於對在運行時使用的響應包裝器 bean 進行序列化和反序列化。
從 Java 對象開始時,此元素用來解決 document literal 方式下的重載衝突。在這種情況下,只有 className 屬性是必需的。 將此註釋應用於客戶機或服務器服務端點接口(SEI)上的方法,或者應用於 JavaBeans 端點的服務器端點實現類。 |
|
javax.xml.ws.ServiceMode |
@ServiceMode 註釋指定服務提供者是需要對整個協議消息具有訪問權還是隻需對消息有效內容具有訪問權。
要點: • 僅支持在使用 @WebServiceProvider 註釋來註釋的類上使用 @ServiceMode 註釋。 |
|
javax.xml.ws.WebFault |
@WebFault 註釋將 WSDL 故障映射至 Java 異常。對從 WSDL 故障消息引用的全局元素生成的 JAXB 類型進行序列化期間,該註釋用來捕獲故障的名稱。它還可以用來定製從特定於服務的異常到 WSDL 故障的映射。
此註釋只能應用於客戶機或服務器上的故障實現類。 |
|
javax.xml.ws.WebServiceProvider |
@WebServiceProvider 註釋表示一個類滿足 JAX-WS 提供程序實現類的要求。
要點: • 實現 Web Service 的 Java 類必須指定 @WebService 或 @WebServiceProvider 註釋。不能同時提供這兩種註釋。 • 只有服務實現類才支持 @WebServiceProvider 註釋。 • 任何具有 @WebServiceProvider 註釋的類都必須具有名爲 invoke 的操作。 |
|
javax.annotation.Resource |
@Resource 註釋標記應用程序所需要的 WebServiceContext 資源。
將此註釋應用於 JavaBeans 端點或提供程序端點的服務器端點實現類。對容器進行初始化時,容器會將 WebServiceContext 資源的實例添加到端點實現中。 |
|
javax.annotation.PostConstruct |
@PostConstruct 註釋標記需要在對類執行依賴性注入之後才執行的方法。
將此註釋應用於 JAX-WS 應用程序處理程序、JavaBeans 端點或提供程序端點的服務器端點實現類。 |
|
javax.annotation.PreDestroy |
@PreDestroy 註釋標記在容器除去實例時必須執行的方法。
將此註釋應用於 JAX-WS 應用程序處理程序、JavaBeans 端點或提供程序端點的服務器端點實現類。 |
|
適用於使用 @WebService 註釋的類的方法的規則
- 如果某個實現類的 @WebService 註釋引用了 SEI,那麼該實例類不能具有任何 @WebMethod 註釋。
- 無論是否指定了 @WebMethod 註釋,SEI 的所有公用方法都被認爲是已顯示的方法。在包含 exclude 屬性的 SEI 上使用 @WebMethod 註釋是不正確的。
- 對於不引用 SEI 的實現類,如果對 @WebMethod 註釋指定了值 exclude=true,那麼不會顯示該方法。如果未指定 @WebMethod 註釋,那麼將顯示包括繼承的方法在內的所有公用方法,但是不包括從 java.lang.Object 繼承的方法。