1. 程式人生 > >【WebService框架-CXF】——CXF入門例項

【WebService框架-CXF】——CXF入門例項

這篇文章主要介紹如何編寫WebService的服務端和客戶端

準備工作

下載apache-cxf-2.4.0的jar包
將bin目錄配置到環境變數中,如:E:\Workspaces\MyEclipse 10\CXF\apache-cxf-2.4.0\bin

編寫服務端

  1. New –》 Java Project
     備註:如果使用apache-cxf-2.4.0,jdk需要是1.7
  2. 編寫介面和實現類
  3. 新增@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暴露成功!"); } }

客戶端

  1. New Java Project(WS_Client)
  2. 生成客戶端程式碼
    在命令視窗定位到客戶端專案的src目錄下,通過工具wsdl2java 服務地址(**?wsdl)生成客戶端程式碼
    這裡寫圖片描述

  3. 編寫客戶端呼叫程式碼,呼叫服務
    呼叫服務工廠(一個繼承了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文件 一個介面文件和一個實現文件 介面文件和實現文件寫在了一個

客戶端

  1. 依據wsdl文件生成客戶端程式碼
  2. 編寫客戶端呼叫服務程式碼
    1. 獲得工廠
    2. 通過工廠生成服務代理
    3. 呼叫代理中的方法