CXF webservice完整例子


Web Service技術應用廣泛,可實現不同平台的數據交換,現做了一個CXF webservice小例子,供webservice初學者參考.

1.環境搭建

1.1  下載 Apache CXF  可以去官方下載 http://cxf.apache.org/ 。也可點擊http://pan.baidu.com/s/1jIPyOYU 我分享的雲盤下載(apache-cxf-2.4.2).  解壓文件

1.2  配置Apache CXF環境變量: 創建一個CXF_HOEM變量,值為CXF框架所在根目錄

  

   在path中添加CXF_HOEM變量

  

 

1.3  創建java項目   引入 D:\work\apache-cxf-2.4.2\lib 目錄下的jar包

2.代碼編寫

2.1  創建IHelloService.java 接口

package com.service;

import javax.jws.WebParam;
import javax.jws.WebService;

@WebService
public interface IHelloService {
    public String sayHello(@WebParam(name = "text") String text);

    public User getUser(String id);
}
View Code

 

2.2  創建HelloServiceImpl.java實現 IHelloService 接口

package com.service;

import java.util.Date;

import javax.jws.WebService;

@WebService(endpointInterface = "com.service.IHelloService", serviceName = "HelloWorld")
public class HelloServiceImpl implements IHelloService {

    @Override
    public String sayHello(String text) {
        return "Hello x " + text;
    }

    @Override
    public User getUser(String id) {
        User u = new User();
        u.setId(id);
        u.setAge(10);
        u.setName("小明");
        u.setBirthday(new Date(new Date().getTime() - 10 * 12 * 30 * 24 * 3600));
        return u;
    }

}
View Code

 

2.3  編寫 webServiceApp.java類來暴露 web服務

package com.service;

import javax.xml.ws.Endpoint;

public class WebServiceApp {
    public static void main(String[] args) {
        System.out.println("web service start");
        HelloServiceImpl implementor = new HelloServiceImpl();
        String address = "http://localhost:8080/HelloService";
        Endpoint.publish(address, implementor);
        System.out.println("web service started");
    }
}
View Code

 

2.4  run webServiceApp.java 類來啟動服務。 訪問 http://localhost:8080/HelloService?wsdl 查看是否成功

   

 

2.5 編寫客戶端訪問服務
======== 方法1:

創建客戶端的代理,生成factory對象,用於調用服務端的方法

package com.service;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class HelloServiceClient {
    public static void main(String[] args) {
        JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
        svr.setServiceClass(IHelloService.class);
        svr.setAddress("http://localhost:8080/HelloService");
        IHelloService hw = (IHelloService) svr.create();

        System.out.println(hw.sayHello("你好"));

        User u = hw.getUser("1");
        System.out.println(u.getName());
    }
}

 

======== 方法2:
通過命令自動生成客戶端文件

 法一.   1.cmd 進入doc窗口,

            2.用  wsimport -s D:\ -p com.client http://localhost:8080/HelloWorld?wsdl (不用安裝apache-cxf客戶端)命令生成

 法二.
 1.   cmd 進入doc窗口, 進入apache-cxf-2.4.2\bin路徑
 2.   運行 wsdl2java -frontend jaxws21 -p com.client -d D:\ -client -autoNameResolution http://localhost:8080/HelloWorld?wsdl    會在D盤生成 com\client文件夾,里面有生成號的客戶端文件。將文件拷貝到項目中

  

3.  調用接口

 

package com.main;

import com.client.HelloWorld;
import com.client.IHelloService;

public class ClientMain {

    public static void main(String[] args) {
        HelloWorld factory = new HelloWorld();
        IHelloService hw = factory.getHelloServiceImplPort();
        System.out.println(hw.sayHello("sss"));

        System.out.println(hw.getUser("11").getName());
    }
}

 

下面鏈接可下載上述源碼

http://pan.baidu.com/s/1kUZVZHt  希望能幫到你


免責聲明!

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



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