Apache cxf暴露接口以及客戶端調用之WebService初步理解


在我們真實的項目中,經常會調用別人提供給我們的接口,或者在自己的團隊中,

restful風格的前后端分離也經常會提供一個后端接口暴露出去供app,或者.net/C/C++程序員去調用,此時就需要使用到一個工具或者一套程序來調用暴露的接口。

而今天我要說的就是其中的一個方式,使用apache的cxf調用以及暴露接口,讓我們直接開始代碼

1、首先我們需要去下載cxf,cxf是apache的一個產品,下載鏈接附上:http://www.apache.org/dyn/closer.lua/cxf/3.2.5/apache-cxf-3.2.5.zip

建議大家下載這個

下載完成之后解壓放在一個目錄下,需要去環境變量的path路徑下配置一下,這里請看圖解:

(這個是下載解壓好的cxf,版本是3.2.5)

環境變量配置:

新建一個CXF_HOME的環境變量,指向你的CXF解壓后存放的路徑

然后在path中添加這個bin

此時在cmd命令中輸入wsdl2java -help,可以看到輸出下面這些內容,此時你已經配置好了cxf

打開idea,我們可以開始編寫代碼了

2、idea中配置cxf

一次打開File--settings--左側輸入cxf--選擇Tools下面的WebServices

如圖的cxf配置即可。

3、新建項目就不介紹了,直接開始寫一個要暴露的接口:

package com.cxfdemo.hello;

import javax.jws.WebService;

@WebService
public interface MyWebService {
    int add(int a, int b);
    int minus(int a, int b);
}

  寫這個接口的實現類

 1 package com.cxfdemo.hello;
 2 
 3 import javax.jws.WebService;
 4 
 5 @WebService(endpointInterface = "com.cxfdemo.hello.MyWebService")
 6 public class MyWebServiceImpl implements  MyWebService{
 7     @Override public int add(int a, int b) {
 8         System.out.println(a+"+"+b+"="+(a+b)); return a+b;
 9     }
10     @Override public int minus(int a, int b) {
11         System.out.println(a + "-" + b + "=" + (a - b));
12         return a - b;
13     }
14 }

這時候可以寫一個暴露的Server端: 

package com.cxfdemo.hello;


import javax.xml.ws.Endpoint;

public class MyServer {
    public static void main(String[] args) {
        String address = "http://localhost:8888/ms";
        Endpoint.publish(address,new MyWebServiceImpl());
    }
}

  Client測試端:

 1 package com.cxfdemo.hello;
 2 
 3 import javax.xml.namespace.QName;
 4 import javax.xml.ws.Service;
 5 import java.net.MalformedURLException;
 6 import java.net.URL;
 7 
 8 public class MyClient {
 9     public static void main(String args[]) {
10         try { URL url = new URL("http://localhost:8888/ms?wsdl");
11             //命名空間 及 名稱
12             QName qName = new QName("http://hello.cxfdemo.com/","MyWebServiceImplService");
13             Service service = Service.create(url, qName); MyWebService myWebservice = service.getPort(MyWebService.class);
14             System.out.println(myWebservice.add(2, 3)); System.out.println(myWebservice.minus(2, 3));
15         } catch (MalformedURLException e) {
16             e.printStackTrace();
17         }
18     }
19 }

這個時候我們就可以啟動項目了,首先運行啟動MyServer,項目啟動成功后,我們可以通過這個鏈接訪問:http://localhost:8888/ms?wsdl

此時可以看到暴露的接口的內容:

  此時即暴露接口成功,我們再來啟動Client測試端:

看到控制台輸出:

 

 此時你就可以開始寫一個基於WebService的暴露接收demo了

 


免責聲明!

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



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