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); }
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; } }
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"); } }
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()); } }
下面鏈接可下載上述源碼