詳解使用w s g e n 和 w s i m p o r t 開 發 W e b S e r v i c e

本文旨在描述如何使用jdk自帶的wsgen.exe 和wsimport.exe開發WebService。

1.新建一個java工程,項目名:WebServiceDemo。由於本文想通過完全手動建立的方式來演示整個過程,故我們的工程目錄就是WebServiceDemo啦!

2.在此目錄下新建Business.java 和 BusinessImpl.java兩個類,分別如下:

public interface Business {
	public String echo(String message);	
}
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService(name="Business",serviceName="BusinessService",targetNamespace="http://webservice.chapter1.book/client")
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class BusinessImpl implements Business {

	public String echo(String message) {
		if("quit".equalsIgnoreCase(message.toString())){
			System.out.println("Server will be shutdown!");
			System.exit(0);
		}
		System.out.println("Message from client: "+message);
		return "Server response: "+message;
	}

}
3. cmd到命令行模式下,將此二文件編譯爲class文件,然後運行如下命令生成wsdl文件,注意之前應該在WebServiceDemo目錄下新建一個叫wsdl的文件夾。

運行完上面的命令,我們會發現在wsdl目錄下生成了BusinessService.wsdl文件,用notepad打開會發下就是一個xml格式的文件。

4.接下來我們創建一個Server.java的類,用來發布Service。代碼如下;

import javax.xml.ws.Endpoint;

public class Server {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Endpoint.publish("http://localhost:9527/BusinessService", new BusinessImpl());
		System.out.println("Server has been started");
	}

}

編譯然後運行,在瀏覽器中輸入URL:http://localhost:9527/BusinessService?wsdl 如果出現一個XML文檔,就說明發布成功了。


注意瀏覽器中顯示的就是我們在wsdl目錄下生成的BusinessService.wsdl文件內容,這個文件就是我們後面的wsimport.exe命令執行時要用到的。

5.在Server運行的條件下,下面我們通過wsimport來生成客戶端執行類。另起一個命令行窗口,執行如下命令:

成功執行後,我們會發現在WebServiceDemo路徑下生成了如下的4個文件:

注意目錄結構就是我們之前在BusinessImpl.java類中的targetNamespace指定的,也即對應wsdl文件中的路徑,只是轉換爲目錄結構時要注意域名倒着寫。

targetNamespace="http://webservice.chapter1.book/client"
OK,至此我們完成了用w​s​g​e​n​和​w​s​i​m​p​o​r​t​開​發​W​e​b​S​e​r​v​i​c​e的任務。

6.下面就是通過一個客戶端Client.java 類來驗證webservice的時候了:

import java.io.BufferedReader;
import java.io.InputStreamReader;

import book.chapter1.webservice.client.Business;
import book.chapter1.webservice.client.BusinessService;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		BusinessService businessService=new BusinessService();
		Business business=businessService.getBusinessPort();
		BufferedReader systemIn=new BufferedReader(new InputStreamReader(System.in));
                while(true){
			String command=systemIn.readLine();
			if(command==null || "quit".equalsIgnoreCase(command.trim())){
				System.out.println("Client quit!");
				try{
					business.echo(command);
				}
				catch(Exception e){
					// IGNORE
				}
				System.exit(0);
			}
			System.out.println(business.echo(command));
		}
	}

}
編譯運行,發送一個消息後看到Server端收到並響應。



發佈了64 篇原創文章 · 獲贊 28 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章