程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2SE >> 用Java客戶機調用Web服務: J2SE和J2EE環境中Web服務客戶機簡介(2)

用Java客戶機調用Web服務: J2SE和J2EE環境中Web服務客戶機簡介(2)

編輯:J2SE

JAX-RPC 1.1 和 JSR 109 是 J2EE 1.4 的組成部分。

服務查找

有兩種客戶機,它們在代碼的編寫、打包和調用的方式上都不相同:

非受管客戶機

J2EE 容器管理的客戶機

這裡,非受管意指不是 J2EE 容器管理的。這些客戶機是 Java 2 Standard Edition(J2SE)客戶機,它們是通過簡單的 Java 命令進行調用的。對於非受管客戶機,服務查找是通過 JAX-RPC ServiceFactory 進行的,JAX-RPC ServiceFactory 是創建服務訪問點的工廠。對於 J2EE 容器管理的客戶機,服務查找是通過 JNDI 查找進行的。

ServiceFactory
JSR 101:“JAX-RPC ServiceFactory 是在 J2SE 環境中查找 Web 服務的標准方式。”

JAX-RPC ServiceFactory

JAX-RPC ServiceFactory 是一個抽象類,用作實例化 JAX-RPC Service 的工廠。它是廠商無關的,使您能夠編寫可移植代碼。ServiceFactory 是實例化的,可以如下進行使用: Javax.XML.rpc.Service service = ServiceFactory.newInstance().createService(...);

您需要將 Web 服務的全限定名(也就是名稱空間加上服務名稱)傳送到 createService() 方法和(可選)描述您想要查找的 Web 服務的 WSDL URL。步驟如下:

(可選)指定 WSDL URL。

指定 Web 服務的全限定名。

調用 ServiceFactory 的 createService() 方法。

然後可以使用獲得的服務接口(Service Interface)來獲取存根、動態代理、或 DII Call 對象,如“ 服務訪問”部分所述。在該部分中,同時還描述了動態調用接口(Dynamic Invocation Interface,DII)。使用這種方法,您不需要知道您想要調用的 Web 服務的 WSDL URL,您只需要指定 createService() 方法中的服務名稱參數。清單1展示了如何使用 ServiceFactory 實現 JAX-RPC Service 。QName 是一個 Javax.XML.namespace.QName 。

清單 1. 使用 JAX-RPC ServiceFactory 獲得 JAX-RPC 服務

String wsdlURL = http://localhost:6080/HelloWebService/services/Hello?wsdl";
String namespace = "http://Hello.com";
String serviceName = "HelloWebService";
QName serviceQN = new QName(namespace, serviceName);

ServiceFactory serviceFactory = ServiceFactory.newInstance();
/* The "new URL(wsdlURL)" parameter is optional */
Service service = serviceFactory.createService(new URL(wsdlURL), serviceQN);

由特定於廠商的 JAX-RPC ServiceFactory 可供選擇。如果您想要利用某個廠商的存根,使用這些 JAX-RPC ServiceFactory 通常是非常容易的(客戶機代碼編寫起來很簡單)。然而,這樣的擴展不是標准的,將很可能在其他廠商的 J2EE 實現上不起作用。

JNDI 查找

JSR 109:“JNDI 查找是在 J2EE 環境中查找 Web 服務的標准方式。”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved