在 IBM Bluemix 云平臺上開發(fā)并部署您的下一個應(yīng)用。
此系列教程演示如何使用 Java SE 6 創(chuàng)建可輕松地從命令行而不是從 Web 應(yīng)用程序服務(wù)器容器中運行的獨立 Web Services 服務(wù)端和客戶端應(yīng)用程序。使用簡單的 Hello World 示例,您將利用 Eclipse IDE、Java SE 6 和 Apache Ant 輕松創(chuàng)建完全可以正常工作的 Web Services 服務(wù)端和客戶端應(yīng)用程序。您還將使用 TCP/IP Monitor 檢查服務(wù)器與客戶端之間的通信流量,并使用 Eclipse Web Services Explorer 工具測試 Web Services 。
本教程是該系列的第 1 部分,將向您介紹如何使用 Eclipse IDE、Java SE 6 和 Ant 發(fā)布 Web Services 應(yīng)用程序。本教程為第 2 部分奠定了基礎(chǔ),第 2 部分將描述 Web Services 客戶端應(yīng)用程序的創(chuàng)建。
完成本教程后,您應(yīng)該知道:
本教程包括為具備一些 Java 語言和 Ant 構(gòu)建的實際應(yīng)用知識的初級和中級 Java 程序員編寫的簡單步驟。初學(xué)者到更高級的 Java 開發(fā)人員將獲得一些知識:學(xué)會如何構(gòu)建、部署和運行獨立 Web Services 服務(wù)端和分布式客戶端,以提供防火墻友好的遠(yuǎn)程通信和應(yīng)用程序處理。
要按照示例進(jìn)行操作,您需要下載:
您不必下載 Ant,因為其功能與 Eclipse 打包在一起。本教程使用 Ganymede Package for the Eclipse IDE for Java EE Developers。
注意:將 Java Runtime Environment (JRE) 安裝為系統(tǒng) Java 虛擬機(Java Virtual Machine,JVM)意味著它將取代在 Microsoft? Windows? 目錄中找到的任何 JVM,或在未從該目錄找到 JVM 的情況下復(fù)制新的副本。將任何瀏覽器與 Java 插件關(guān)聯(lián)意味著將這個新的 Java 版本用于 Applet。
Eclipse 是一個開放源代碼、可擴展的開發(fā)平臺,可以在幾乎所有的操作系統(tǒng)上進(jìn)行安裝。(了解有關(guān) Eclipse 的更多信息。)
安裝 Eclipse 是相當(dāng)簡單的,因為不存在安裝過程:
第一次運行 Eclipse 時,將會顯示歡迎頁面,如圖 1 所示。如果不想閱讀概述和其他產(chǎn)品信息,只需關(guān)閉該頁面,以后可以通過選擇 Help > Welcome 返回到該頁面。
配置 Eclipse 以使用您先前安裝的 Java SE 6 JDK;您需要將項目與此版本的 Java 相關(guān)聯(lián):
Java SE 6
,以便于識別其版本。下一步,您將創(chuàng)建一個項目來構(gòu)造 Web Services 服務(wù)端。項目包含源代碼和其他相關(guān)文件,并允許您使用項目作為源文件的容器,或在項目中設(shè)置文件夾以對文件進(jìn)行組織。
wsServerExample
,如圖 6 所示。 首先需要創(chuàng)建一個 Java 包來容納您的 Java 類:
com.myfirst.wsServer
,如圖 7 所示。 下一步,您需要為服務(wù)器代碼創(chuàng)建一個類:
現(xiàn)在您已經(jīng)為該包提供了一個類,下面可以開始編寫服務(wù)器的代碼了,如清單 1 所示。
package com.myfirst.wsServer;import Javax.jws.WebService;@WebServicepublic class SayHello { private static final String SALUTATION = "Hello"; public String getGreeting( String name ) { return SALUTATION + " " + name; }}
請注意清單 1 中粗體顯示的代碼。這稱為 Annotation 或元數(shù)據(jù),由 Java SE 5 中引入的 Web Services 元數(shù)據(jù)規(guī)范 (Web Services Metadata Specification) 所使用。開發(fā)人員在對類和方法應(yīng)用 Annotation 之前定義類和方法,以向運行時引擎指明如何將類及其方法作為 Web Services 和 Web Services 操作來啟用。Java SE 6 附帶了這樣一個引擎。
@WebService
Annotation 將 SayHello
類標(biāo)記為實現(xiàn)某個 Web Services ,從而產(chǎn)生可部署的 Web Services 。這個特定的 Annotation 是一個 WSDL 映射 Annotation,并將 Java 源代碼與表示 Web Services 的 WSDL 元素相關(guān)聯(lián)。(有關(guān) Java SE 6 中的其他 Annotation 的更多信息,請參閱參考資料。)
編寫服務(wù)器應(yīng)用程序以后,您需要生成支持 Web Services 的代碼。首先,創(chuàng)建一個名為 build.xml 的新 Ant 文件:
build.xml
,然后單擊 Finish(請參見圖 9)。 <project default="wsgen"> <target name="wsgen" > <exec executable="wsgen"> <arg line="-cp ./bin -keep -s ./src -d ./bin com.myfirst.wsServer.SayHello"/> </exec> </target></project>
BUILD SUCCESSFUL
消息,如圖 10 所示。 在為 Web Services 的服務(wù)器生成代碼以后,您需要發(fā)布該 Web Services 以便能夠開始使用它:
RunService
的名稱。 package com.myfirst.wsServer;import Javax.xml.ws.Endpoint;public class RunService { /** * @param args */ public static void main(String[] args) { System.out.println("SayHello Web Service started."); Endpoint.publish("http://localhost:8080/wsServerExample", new SayHello()); }}
Java SE 6 為發(fā)布 Web Services 提供了新的支持。Endpoint
API 簡單地發(fā)布 Web Services 端點,后者在運行時在某個 URL 處生成 WSDL。
現(xiàn)在服務(wù)器已經(jīng)啟動并運行,您應(yīng)該對其進(jìn)行測試以確保它按預(yù)期工作:
http://localhost:8080/wsServerExample?wsdl
,這應(yīng)該會顯示該 Web Services 的 WSDL 文本,如圖 13 所示。 下一步,您將使用 Eclipse Web Services Explorer 工具,并通過本機 WSDL 和 SOAP 調(diào)用 Web Services 的操作,以測試您剛才創(chuàng)建的 Web Services 的 getGreeting
方法。
http://localhost:8081/wsServerExample?wsdl
,然后單擊 Go 按鈕。 getGreeting
下面,單擊 Add 鏈接(如圖 18 所示)向值表中添加一個新行。 Fiona
),然后單擊 Go 按鈕。 getGreetingResponse
顯示了結(jié)果。您應(yīng)該在 Status 部分看到類似于 return (string): Hello Fiona
的結(jié)果(請參見圖 19)??赡苄枰獫L動或拖動視圖才能看到結(jié)果。 創(chuàng)建、生成和發(fā)布 Web Services 是非常簡單的,只需使用 Eclipse 即可,當(dāng)然還要使用 Java SE 6。請繼續(xù)閱讀本系列教程的第 2 部分,您將在其中構(gòu)建獨立客戶端以便與這個獨立 Web Services 服務(wù)端一起使用。
根據(jù) W3C 的定義,Web Services 是“旨在支持通過網(wǎng)絡(luò)進(jìn)行的可互操作計算機到計算機交互的軟件系統(tǒng)”。換句話說,Web Services 是用于應(yīng)用程序到應(yīng)用程序通信的編程接口。通常,它們用作支持計算機之間通過網(wǎng)絡(luò)(例如 Internet)進(jìn)行通信的 Web 應(yīng)用程序。
客戶端和服務(wù)器使用遵循 SOAP 標(biāo)準(zhǔn)的 XML 消息進(jìn)行通信。也就是說,Web Services 使用 XML 對數(shù)據(jù)進(jìn)行編碼和解碼,并使用 SOAP 來通過開放協(xié)議傳輸數(shù)據(jù)。Web Services 平臺的其中兩個基本要素為 SOAP 和 WSDL。
可擴展標(biāo)記語言(Extensible Markup Language,XML)允許用戶定義他們自己的元素。它是一種通用規(guī)范,可以促進(jìn)結(jié)構(gòu)化數(shù)據(jù)在不同信息系統(tǒng)之間的共享(通常通過網(wǎng)絡(luò))。XML 旨在攜帶信息而不是顯示信息。換句話說,XML 除了對信息進(jìn)行組織、存儲和傳輸以外,并不實際做其他任何工作;它只是純文本。
SOAP 過去代表簡單對象訪問協(xié)議 (Simple Object Access Protocol),但是在 1.2 版中已經(jīng)丟棄了這個概念,因為此概念太具有誤導(dǎo)性了。它是一種輕量級的通信協(xié)議,允許應(yīng)用程序使用 XML 通過網(wǎng)絡(luò)交換信息,或者更簡單地說就是用于訪問 Web Services 的協(xié)議。SOAP 允許應(yīng)用程序彼此通信,而不管它們運行在什么操作系統(tǒng)上,以及是使用什么編程語言編寫的。
WSDL 是應(yīng)用程序可讀的 Web Services 描述語言。它用于描述 Web Services 的功能,以及客戶端應(yīng)用程序應(yīng)該如何調(diào)用 Web Services 。也就是說,它在 XML 文檔中描述 Web Services 的所有方法及其簽名、命名空間,以及統(tǒng)一資源標(biāo)識符(Uniform Resource Identifier,URI)的處理。URI 指定網(wǎng)絡(luò)上的某個資源。
聯(lián)系客服