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開發WebService共有如下幾個步驟:
1,伺服器端
(1)開發一個WebService業務介面。該介面要用@WebService修飾
(2)開發一個WebService業務實現類。該實現類也需要用@WebService修飾
(3)釋出WebService
2,客戶端
(1)呼叫CXF提供的wsdl2java工具,根據WSDL文件生成相應的java程式碼。
WSDL-WebService Definition Language
任何語言實現了WebService,都需要提供,並暴露WSDL文件
(2)找到wsdl2java所生成類中,一個繼承了Service的類
該類的例項可當成工廠來使用
(3)呼叫Service子類的例項的getXxxPort方法,返回遠端WebService的代理