Web Service學習-CXF開發Web Service實例demo(一)
Web Service是什么?
Web Service不是框架,更甚至不是一種技術。而是一種跨平臺,跨語言的規范
Web Service解決什么問題:
為了解決不同平臺,不同語言所編寫的應用之間如何調用問題。例如,有一個C語言寫的程序,它想去調用java語言寫的某個方法。
集中解決:1,遠程調用 2,跨平臺調用 3,跨語言調用
實際應用:
1,同一個公司的新,舊系統的整合。Linux上的java應用,去調用windows平臺的C應用
2,不同公司的業務整合。業務整合就帶來不同公司的系統整合,不同公司的系統可能存在平臺不同,語言不同的問題
3,內容聚合。一個應用,比如需要提供,天氣預報,股票行情,黃金行情等。
CXF與Web Service的關系
CXF是apache旗下的開源框架,由Celtix+ XFire這兩門經典的框架合成,是一套非常流行的web service框架。
CXF方式實現Web Service服務demo
1,配置環境變量
在CLASSPATH中添加E:\apache-cxf-2.6.2\lib
新建CXF_HOMEE:\apache-cxf-2.6.2
在PATH中添加 %CXF_HOME%\bin

2,使用CXF開發Web Service開發服務器端
整個項目的目錄結構(普通java項目):

接口:
package com.tgb.service;
import javax.jws.WebService;
@WebService
public interface HelloWorld{
public String sayHi(String name);
}實現類:
package com.tgb.service.impl;
import java.util.Date;
import javax.jws.WebService;
import com.tgb.service.HelloWorld;
@WebService(endpointInterface="com.tgb.service.HelloWorld",serviceName="HelloWorldImpl")
public class HelloWorldImpl implements HelloWorld{
public String sayHi(String name) {
return name+"您好!現在時間為:"+new Date();
}
}
測試客戶端:
package com.tgb.client;
import javax.xml.ws.Endpoint;
import com.tgb.service.HelloWorld;
import com.tgb.service.impl.HelloWorldImpl;
public class ServerMain {
public static void main(String[] args){
HelloWorld hw=new HelloWorldImpl();
//調用endpoint的publish方法,來發布web service
Endpoint.publish("http://192.168.24.215/hjy",hw);
System.out.println("Web Service暴露成功");
}
}啟動程序:

查看wsdl

3,使用CXF開發WebService客戶端
執行如下命令(找到webService的客戶端的工作空間執行)

刷新客戶端項目,可看到如下生成的代碼:

編寫客戶端調用代碼:
package hjy;
import com.tgb.service.HelloWorld;
import com.tgb.service.impl.HelloWorldImpl;
public class ClientMain {
public static void main(String[] args){
HelloWorldImpl factory=new HelloWorldImpl();
//此處返回的只是遠程Web Service的代理
HelloWorld hw=factory.getHelloWorldImplPort();
System.out.println(hw.sayHi("hejingyuan"));
}
}執行結果:
hejingyuan您好!現在時間為:TueJul 28 14:09:07 CST 2015
總結:
使用CXF開發Web Service共有如下幾個步驟:
1,服務器端
(1)開發一個Web Service業務接口。該接口要用@WebService修飾
(2)開發一個Web Service業務實現類。該實現類也需要用@WebService修飾
(3)發布Web Service
2,客戶端
(1)調用CXF提供的wsdl2java工具,根據WSDL文檔生成相應的java代碼。
WSDL-Web Service Definition Language
任何語言實現了Web Service,都需要提供,并暴露WSDL文檔
(2)找到wsdl2java所生成類中,一個繼承了Service的類
該類的實例可當成工廠來使用
(3)調用Service子類的實例的getXxxPort方法,返回遠程Web Service的代理
來自: http://blog.csdn.net/hejingyuan6/article/details/47104759