1. 程式人生 > >Java WebService介面生成和呼叫 圖文詳解

Java WebService介面生成和呼叫 圖文詳解

webservice簡介:
Web Service技術, 能使得執行在不同機器上的不同應用無須藉助附加的、專門的第三方軟體或硬體, 就可相互交換資料或整合。依據Web Service規範實施的應用之間, 無論它們所使用的語言、 平臺或內部協議是什麼, 都可以相互交換資料。Web Service是自描述、 自包含的可用網路模組, 可以執行具體的業務功能。Web Service也很容易部署, 因為它們基於一些常規的產業標準以及已有的一些技術,諸如標準通用標記語言下的子集XML、HTTP。Web Service減少了應用介面的花費。Web Service為整個企業甚至多個組織之間的業務流程的整合提供了一個通用機制

一、 WebService生成

1.在eclipse或myclipse新建一個Web專案,並新建一個class類,用於釋出;
這裡寫圖片描述

2.編寫供客戶端呼叫的方法,即編譯方法程式碼;
示例:

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

/**
* Title: ServiceHello
* Description: 基於jdk1.6以上的javax.jws 釋出webservice介面
                @WebService
- 它是一個註解,用在類上指定將此類釋出成一個ws。 Endpoint – 此類為端點服務類,它的方法publish用於將一個已經添加了@WebService註解 物件繫結到一個地址的埠上。 * Version:1.0.0 * @author panchengming */
@WebService public class JwsServiceHello { /** 供客戶端呼叫方法 該方法是非靜態的,會被髮布 * @param name 傳入引數 * @return String 返回結果 * */
public String getValue(String name){ return "歡迎你! "+name; } /** * 方法上加@WebMentod(exclude=true)後,此方法不被髮布; * @param name * @return */ @WebMethod(exclude=true) public String getHello(String name){ return "你好! "+name; } /** 靜態方法不會被髮布 * @param name * @return */ public static String getString(String name){ return "再見!"+name; } //通過EndPoint(端點服務)釋出一個WebService public static void main(String[] args) { /*引數:1,本地的服務地址; 2,提供服務的類; */ Endpoint.publish("http://192.168.1.105:8080/Service/ServiceHello", new JwsServiceHello()); System.out.println("釋出成功!"); //釋出成功後 在瀏覽器輸入 http://192.168.1.105:8080/Service/ServiceHello?wsdl } }

二、WebService呼叫方法

生成程式碼方式一

1.新建一個class類,用於呼叫webservice。右鍵src,找到Web Service Client,並輸入wsdl地址,選擇下載程式碼的路徑;(url: http://192.168.1.105:8080/Service/ServiceHello?wsdl)
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
2.將地址上的檔案下載下來(注意和釋出JDK一致);
3.寫呼叫方法呼叫下載下來的WebService中的java類中的方法;
示例:

import com.pcm.ws.jws.JwsServiceHello;
import com.pcm.ws.jws.JwsServiceHelloService;

/**
 * 
* Title: JwsClientHello
* Description: webService 客戶端呼叫
* Version:1.0.0  
* @author panchengming
 */
public class JwsClientHello {

    public static void main(String[] args) {
         //呼叫webservice
        JwsServiceHello hello=new JwsServiceHelloService().getJwsServiceHelloPort();
        String name=hello.getValue("panchengming");
        System.out.println(name);
    }
}

這裡寫圖片描述

生成程式碼方式二
1.建立Web Service Project,命名為TheClient。
2.在dos命令下輸入 wsimport -s “src目錄” -p “生成類所在包名” -keep “wsdl釋出地址”
示例:wsimport -s G:\workspace\webService\webService_Project\src -p com.pcm.ws.jws -keep http://192.168.1.105:8080/Service/ServiceHello?wsdl
3.成功則返回 parsing WSDL…
generating code…
compiling code…
4.重新整理專案,生成類;
5,寫呼叫方法(同上);

三、總結:

如何釋出一個Web服務:
a,在類上新增@WebService註解
(注:此註解是jdk1.6提供的,位於javax.jws.WebService包中)
b,通過EndPoint(端點服務)釋出一個WebService
(注:EndPoint是jdk提供的一個專門用於釋出服務的類,該類的publish方法接收兩個引數,一個是本地的服務地址,二是提供服務的類。位於 javax.xml.ws.Endpoint包中)
c,注:
類上添加註解@WebService,類中所有非靜態方法都會被髮布;
靜態方法和final方法不能被髮布;
方法上加@WebMentod(exclude=true)後,此方法不被髮布;