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