1. 程式人生 > 其它 >【WebService】使用cxf釋出web service

【WebService】使用cxf釋出web service

技術標籤:WebServiceweb service

什麼是 CXF?

CXF 是目前最主流 WebService 開發框架 ,由 Apache 提供。

CXF WebService 開發,主要分為兩種服務提供方式 WS 、RS

  • JAX-WS 傳輸資料,就是 XML 格式,基於 SOAP 協議
  • JAX-RS 傳輸資料,傳輸 XML 格式或者 JSON 格式,基於 HTTP 協議

JAX-WS獨立服務使用

1、 建立 maven java 專案

2、 在專案中匯入 CXF jar 包支援

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

使用 maven 座標,要提供 jaxws 服務,引入 jaxws 的 jar 包 , 要提供 jaxrs 服務,引入 jaxrs 的 jar 包。

注意:版本號必須寫,且為3.0.0及以後的版本

3、 編寫服務端程式

編寫實體類

public class User {
    private Integer id;
    private String userName;
    private String city;
    // 省略getter、setter
}

編寫服務

@WebService 使用類上面,標記類是 WebService 服務提供物件

@WebMethod 使用方法上面,標記方法 是 WebService 服務提供方法

@WebService
public interface IUserService {

    @WebMethod
    String sayHello(String name);
}

public class UserServiceImpl implements IUserService {

    public String sayHello(String name) {
        return "Hello, " + name;
    }
}

將 服務方法釋出到網路上,給其它系統呼叫

public class ServerApplication {
    public static void main(String[] args) {
        JaxWsServerFactoryBean jaxWsServerFactoryBean = new JaxWsServerFactoryBean();
        //釋出的地址和服務名
        jaxWsServerFactoryBean.setAddress("http://localhost:9999/userService");
        jaxWsServerFactoryBean.setServiceClass(UserServiceImpl.class);
        Server server = jaxWsServerFactoryBean.create();
        server.start();
        System.out.println(">>>>>>>>開始服務>>>>>>>>");
    }
}

4、 編寫客戶端操作

生成樁

建立一個目錄(可以隨便)來儲存生成class檔案,利用如下命令

wsimport -s . -p com.example.server http://localhost:9999/userService?wsdl

打jar包,導jar包(這一步可以省略)

把目錄下的一堆class檔案打成jar包,開啟命令列,進入上面建立的目錄下,執行如下命令

jar cvf cxf-m-server.jar *

其中,檔名可以隨意取。

在maven專案中,建立一個和src同級的目錄叫lib,把jar包拷貝到lib中,然後右鍵(以idea為例)選在Add as Library

如果不打成jar包,就像https://blog.csdn.net/xiaoxiao_su123/article/details/110872112 那樣處理即可。

編寫客戶端

public class ClientApplication {
    public static void main(String[] args) {
        JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
        // 只有匯入jar包,才能引入這個類
        jaxWsProxyFactoryBean.setServiceClass(IUserService.class);
        jaxWsProxyFactoryBean.setAddress("http://localhost:9999/userService?wsdl");
        IUserService userService = (IUserService) jaxWsProxyFactoryBean.create();
        String result = userService.sayHello("李四");
        System.out.println(result);
    }
}

參考文章

https://baijiahao.baidu.com/s?id=1634936856075892795&wfr=spider&for=pc