1. 程式人生 > >Java WebService接口生成和調用 圖文詳解

Java WebService接口生成和調用 圖文詳解

cto 技術分享 tex 什麽 wsdl eclipse ces 硬件 block

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
      }
      }
      3.進行編譯運行(註:失敗檢查jdk版本)
      技術分享圖片
      4.將所設地址加上?wsdl到瀏覽器上訪問,如出現XML格式代碼,則發布成功,反之,則否;
      技術分享圖片

      二、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)後,此方法不被發布;

Java WebService接口生成和調用 圖文詳解