Java中WebService接口的生成、打包成.exe、設置成Windows服務、及其調用、Apache CXF調用

一、Java中WebService接口的生成:

1、在eclipse工具中新建一個普通的JAVA項目,新建一個java類:JwsServiceHello.java

package com.accord.ws;

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,String age){
        return "歡迎你! "+name + "," + "今年" + age + "歲";
    }

    /**
     * 方法上加@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://10.10.14.70:8080/Service/ServiceHello", new JwsServiceHello());
     System.out.println("發佈成功!");
     
    }
}

2、運行,控制檯會輸出:發佈成功!

3、瀏覽器訪問測試:地址欄 輸入:http://10.10.14.70:8080/Service/ServiceHello?wsdl

如果出現這些就成功了!!!

注:如果想打包成.exe並設置成Windows服務,請參考 二、三 詳細內容;

二、打包成.exe:

參考鏈接:https://blog.csdn.net/u013456370/article/details/81704874

三、.exe設置成Windows服務:

參考鏈接:https://blog.csdn.net/u013456370/article/details/104633436

四、調用、Apache CXF調用:

上面的接口已經發布成功:http://10.10.14.70:8080/Service/ServiceHello?wsdl
1、普通代碼調用:

生成代碼:

①、在eclipse中創建一個普通JAVA項目,命名爲:ws2

②、在DOS命令中輸入:wsimport -s “src目錄” -p “生成類所在包名” -keep “wsdl發佈地址”

例如:wsimport -s D:\workspace\ws2\src -p com.pcm.ws.jws -keep http://10.10.14.70:8080/Service/ServiceHello?wsdl

③、成功則返回:

parsing WSDL… 
generating code… 
compiling code… 

④、在eclipse項目中刷新 ws2項目,生成代碼如下:

⑤、新建調用類:JwsClientHello.java

package com.pcm.ws.jws.client;

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

public class JwsClientHello {

	public static void main(String[] args) {
		JwsServiceHello hello = new JwsServiceHelloService().getJwsServiceHelloPort();
		String name = hello.getValue("張三", "6");
		System.out.println(name);
	}
}

⑥、運行,控制檯輸出:歡迎你! 張三,今年6歲

 

注:生成代碼的方式有多種,這只是其中一種!!!

參考鏈接:https://blog.csdn.net/qazwsxpcm/article/details/70370490 

 

2、Apache CXF調用 

①、新建Maven項目:(因爲需要一些jar,懶得一個一個下載了)

②、打開:pom.xml文件:

<dependency>
   		<groupId>org.apache.cxf</groupId>
   		<artifactId>cxf-rt-frontend-jaxws</artifactId>
   		<version>3.3.0</version>
	</dependency>
	<dependency>
  		<groupId>org.apache.cxf</groupId>
    	<artifactId>cxf-rt-transports-http</artifactId>
   		<version>3.3.0</version>
	</dependency>

③新建一個測試類:WebServiceTest.java


import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
/**
 * 創建一個WebService客戶端,測試WebService服務端的可用性
 */
public class WebServiceTest {
	public static void main(String[] args) {

		// CXF動態客戶端工廠
		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		// WSDL文檔url配置()
		String wsdlUrl = "http://10.10.14.70:8080/Service/ServiceHello?wsdl";
		Object[] objects = null;
		try {
			// 獲取CXF客戶端 
			Client client = dcf.createClient(wsdlUrl);
			// 調用Web Service方法
			objects = client.invoke("getValue", "張三", "5");
			
		} catch (Exception e) {
			e.printStackTrace();
		}

		// 獲取調用結果
		System.out.println("調用結果:" + objects[0]);

		System.out.println("=========>");
		try {
			// 獲取CXF客戶端
			Client client = dcf.createClient(wsdlUrl);
			// 調用Web Service方法
			objects = client.invoke("getValue", "旺財", "8");
		} catch (Exception e) {
			e.printStackTrace();
		}

		// 獲取調用結果
		System.out.println("調用結果:" + objects[0]);
	}
}

④、運行,控制檯輸出:

調用結果:歡迎你! 張三,今年5歲
=========>
調用結果:歡迎你! 旺財,今年8歲

 

3、普通代碼調用、Apache CXF調用調用的優缺點:

需要不需要額外的Jar包

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章