eclipse下開發簡單的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的客戶端實現。

其他命令參數請參照:http://download-llnw.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html

 

 

 

 

對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程序,輸出結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM