【WebService框架-CXF】——CXF入門例項
阿新 • • 發佈:2019-02-03
這篇文章主要介紹如何編寫WebService的服務端和客戶端
準備工作
下載apache-cxf-2.4.0的jar包
將bin目錄配置到環境變數中,如:E:\Workspaces\MyEclipse 10\CXF\apache-cxf-2.4.0\bin
編寫服務端
- New –》 Java Project
備註:如果使用apache-cxf-2.4.0,jdk需要是1.7 - 編寫介面和實現類
- 新增@Web Service註解(介面和實現類都要新增)
其中實現類的註解要指明實現了哪個介面
@WebService
public interface HelloWorld {
String sayHi(String name);
}
@WebService(endpointInterface = "com.tgb.ws.HelloWorld",serviceName = "HelloWorldWS")
public class HelloWorldWS implements HelloWorld {
public String sayHi(String name) {
Date currentDate=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-dd hh:mm:ss" );
String strDate=sdf.format(currentDate);
return name+",你好!"+ "現在時間是:"+strDate;
}
}
endpintInterface:表示該實現類實現的介面,寫完整類名
serviceName表示服務的名稱,可以任意寫。
4. 引入Jar包
5. 釋出服務
(使用Endpoint類釋出的靜態方法)
public class TestMain {
public static void main(String[] arg){
HelloWorld hw=new HelloWorldWS();
//hw.sayHi("許晨陽");
Endpoint.publish("http://localhost/HelloWorldWS",hw);
System.out.println("Web Service暴露成功!");
}
}
客戶端
- New Java Project(WS_Client)
生成客戶端程式碼
在命令視窗定位到客戶端專案的src目錄下,通過工具wsdl2java 服務地址(**?wsdl)生成客戶端程式碼
編寫客戶端呼叫程式碼,呼叫服務
呼叫服務工廠(一個繼承了service的類)的get**Port方法
public class ClientMain {
public static void main(String[] args){
//工廠
HelloWorldWS factory=new HelloWorldWS();
//只是服務的代理
HelloWorld hw=factory.getHelloWorldWSPort();
System.out.println(hw.sayHi("許晨陽"));
}
}
回顧與總結
發現與用CXF編寫WebService的服務端和客戶端的步驟和程式碼有很多相同點。
服務端:
1.用@WebService註解實現類
- | CXF | EJB |
---|---|---|
介面註解 | @WebService註解 | |
實現類上的註解 | @WebService(endpointInterface = “com.tgb.ws.HelloWorld”,serviceName = “HelloWorldWS”) | @WebService,服務名稱預設由實現類名+Service構成 |
實現類中的方法 | @WebMethod |
2.釋出服務
- | CXF | EJB |
---|
3.生成的wsdl文件
- | CXF | EJB |
---|---|---|
WSDL文件 | 一個介面文件和一個實現文件 | 介面文件和實現文件寫在了一個 |
客戶端
- 依據wsdl文件生成客戶端程式碼
- 編寫客戶端呼叫服務程式碼
- 獲得工廠
- 通過工廠生成服務代理
- 呼叫代理中的方法