1. 程式人生 > >eclipse下開發簡單的Java Web Service

eclipse下開發簡單的Java Web Service

service部分

在eclipse下新建一個動態web專案

在專案中新建一個service類

編寫SayHello類的程式碼

package org.sunny.service;

//包不要引用錯了
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

//註解@WebService不能少
@WebService
public class SayHello {
    
    //該方法為客戶端呼叫的方法,方法名任意
    public String say(String name){
        return "Hello " + name + " , this is SayHelloService !" ;
    }

    public static void main(String[] args) {
        //第一個引數是訪問時的url,9091是任意一個不佔用的埠
        Endpoint.publish("http://localhost:9091/Service/SayHello", new SayHello());
        System.out.println("service success !");
    }
}

進行測試:對任意空白處右鍵

或者

執行後將會呼叫類中的main方法

執行結果出現如下配置則表示釋出成功

訪問網頁:http://localhost:9091/Service/SayHello?wsdl

注意:‘?wsdl’是必須要新增的。

出現如下頁面表示釋出成功

client部分

新建客戶端類

當然,你也可以新建一個web專案來編寫客戶端程式碼,本次client可service放在同一個專案下

開啟命令列:win+R開啟執行,輸入cmd

輸入以下命令

  wsimport -s E:\SunnyWen\Data\Java_web\WebServiceDemo\src -p org.sunny.client.config -keep http://localhost:9091/Service/SayHello?wsdl

  -s 後面的是你專案src所在的路徑

  -p 後面的是你通過該命令生成的類所在的包

  -keep 表示匯出webservice的class檔案時是否也匯出原始碼java檔案.

  -verbose表示詳細資訊。

  -d 表示輸出的目錄,目錄必須事先存在,否則匯出失敗。

在JDK的bin資料夾中,有一個wsimport.exe,這個工具依據wsdl檔案生成相應的類檔案,用這些類檔案,就可以像呼叫本地的類一樣呼叫WebService提供的方法。該工具可以用於非Java的伺服器,如:用C#編寫的WebService,通過wsimport則生成Java的客戶端實現。

對client類進行程式碼編寫

package org.sunny.client;

import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
//包別導錯了
import javax.xml.ws.WebServiceClient;

//匯入兩個命令生成的類
import org.sunny.client.config.SayHello;
import org.sunny.client.config.SayHelloService;

//註解@WebServiceClient需要加入
@WebServiceClient
public class ClientToSay {

    public static void main(String[] args) {

        // 方法一
        /*try {
            // 服務WSDL Document的地址

            URL url = new URL("http://localhost:9091/Service/SayHello?wsdl");
            // 1.Qnameqname是qualified name 的簡寫
            // 2.構成:由名字空間(namespace)字首(prefix)以及冒號(:),還有一個元素名稱構成
            // 由package-info.java檔案可知namespace為http://service.sunny.org/,
            QName qname = new QName("http://service.sunny.org/", "SayHelloService");
            Service service = Service.create(url, qname);
            SayHello sayHello = service.getPort(SayHello.class);
            String result = sayHello.say("Sunny01");
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }*/

        // 方法二
         //通過SayHelloService的getSayHelloPort()方法的奧SayHello介面
         SayHello sayHello = new SayHelloService().getSayHelloPort();
         //呼叫SayHello介面的say方法
         String result = sayHello.say("Sunny02");
         //輸出返回內容
         System.out.println(result);
    }

}

執行為java application程式,輸出結果