現在,我們開始在應用服務器上部署一個與前例類似的Web服務。爲了能夠運行本節的例子,我們需要從http://java.sun.com/javaee/downloads/index.jsp 處下載一個Windows平臺下的Java EE 5 Update 4應用服務器((java_ee_sdk-5_04-windows-nojdk.exe)。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
安裝並啓動服務器
如果您的機器上安裝有最新版的JDK,您可以選擇下載nojdk的安裝版本,否則,您需要下載”Java EE+JDK”的版本。雙擊下載的exe文件,安裝到您的本地硬盤(安裝目錄路徑中最好不要有空格和怪字符)。
啓動Java EE服務器的缺省域非常簡單,您只需要從”程序”菜單中選擇”Start Default Server”即可。
Start -> All Programs -> Sun Microsystems -> Java EE 5 SDK -> Start Default Server
服務器啓動後,您可以在瀏覽器輸入下列地址,驗證一下您的服務器是否已經啓動。
http://127.0.0.1:8080/
有時,您會發現,使用命令行方式啓動服務器比較簡單,首先,您需要進入下面的目錄路徑下,執行下列命令:
cd %J2EE_HOME%/lib
asadmin-pause start-domain domain1
其中,J2EE_HOME是您機器上Java EE Server的安裝目錄。
服務器端和客戶端代碼
您可以在ch03/01_JaxWs/JavaEEServer/src目錄下找到本節使用的服務器及客戶端的源代碼文件(譯者注:本書代碼請從http://www.packtpub.com/files/code/3216_Code.zip處下載),下面是對這些源代碼的解釋:
HelloWebService.java
HelloWebService類中也使用了Java註解,這些註解的意思和前面的例子相同,此處不再贅述。
- @WebService
- public class HelloWebService {
- private static int times;
- public HelloWebService() {
- System.out.println("Inside HelloWebService.HelloWebService...");
- }
- public String hello(String param) {
- System.out.println("Inside HelloWebService.hello... - " + (++times));
- return "Return From Server : Hello " + param;
- }
- }
Client.java
客戶端的代碼非常簡單:
- public class Client {
- @WebServiceRef(wsdlLocation = "http://localhost:8080/HelloWebService/HelloWebServiceService?WSDL")
- static HelloWebServiceService service;
- public static void main(String[] args) {
- Client client = new Client();
- client.test();
- }
- public void test() {
- try {
- HelloWebService helloWebServicePort = service
- .getHelloWebServicePort();
- String ret = helloWebServicePort.hello(System
- .getProperty("user.name"));
- System.out.println("Hello result = " + ret);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
上面的代碼中,我們使用了
javax.xml.WebServiceRef註解,該註解聲明瞭一個已發佈的Web服務的引用,而@WebServiceRef使用wsdlLocation元素指明瞭HelloWebService這個服務的WSDL文件的位置;接下來,客戶端就可以獲取遠程服務的代理,從而通過代理調用Web服務方法。運行服務器和客戶端
爲了簡單起見,本例中我們也不對該服務進行打包,而只是直接將Web服務的實現類編譯後放到Java EE Server的autodeploy目錄中,及%J2EE_HOME%/domains/domain1/autodeploy目錄。
我們可以用一個ant命令執行以下三步:
(1) 編譯服務器端和客戶端代碼
(2) 把服務器端類部署到缺省域中
(3) 運行客戶端程序,向服務器端發送Web服務請求
現在,假定您的Java EE服務器已經啓動並運行,請到本章的源代碼目錄下,執行下列命令:
cd ch03/01_JaxWS/JavaEEServer
ant
下圖顯示了上面命令執行後,控制檯上的輸出,您可以看到,客戶端首先向服務器發送請求,然後,服務器的響應會打印在客戶端的控制檯上。
當然,您也可以在瀏覽器中輸入http://localhost:8080/HelloWebService/HelloWebServiceService?WSDL,來訪問上面已經部署的Web服務的WSDL。