【WebService】使用cxf釋出web service
阿新 • • 發佈:2020-12-21
什麼是 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