CXF-web service之集大成者,想要學好web service,必須會


CXF-web service之集大成者,想要學好web service,必須會


提到web service,就不得不提到大名鼎鼎的cxf了,Apache軟件基金會的項目。但是這種項目一定是提供了各種功能,複雜性一定很高;各種兼容,所以會有很多用法。當然了,能成為apache基金會的項目,太小了是不是有點對不起apache的名號。


我們今天從最簡單的開始,基於前一篇JDK開發時對Web Service的理解,先用CXF開發一個最簡單的Web Service,以後在考慮其各種複雜性。


CXF-web service之集大成者,想要學好web service,必須會

這server端的代碼看起來就比JDK的實現要多好多。利用一個server的工廠JaxWsServerFactoryBean創建server,通過set方法設置address屬性,還有ServiceClass屬性,然後再利用server.start()方法啟動服務。滿滿的設計感的味道。

備註:紅線標識的才是我們真正提供服務的具體實現類。


然後通過瀏覽器看看我們生成的wsdl,一樣的像天書那樣難讀。

CXF-web service之集大成者,想要學好web service,必須會

我們再來看看客戶端調用的代碼。

CXF-web service之集大成者,想要學好web service,必須會

通過一個代理JaxWsProxyFactoryBean來創建一個調用服務器端方法的代理類,通過代理類調用服務端暴露的方法。其實看起來也像是一個工廠方法。不知道後臺到底是如何實現的呢?


代碼比JDK的實現多很多,看起來也複雜很多,那麼到底有什麼好處呢?我們先來看一下可以幫我們減少工作量的方法。

CXF也提供了生成代碼的方法。這個命令需要我們去下載CXF。

命令:wsdl2java -client http://127.0.0.1:13579/doer?wsdl

也是生成了一大堆的文件,如下

CXF-web service之集大成者,想要學好web service,必須會


然後我們就可以用一個相對簡單的方式來調用服務了。

紅線代碼是生成的可以直接調用服務的客戶端代碼。我們可以直接運行一下試試。


CXF-web service之集大成者,想要學好web service,必須會

哎!~ 與原來JDK生成的客戶端相比,我們不用寫代碼了。哈哈哈!!!

這裡可以看到對我們服務的調用沒有使用任何參數,或者說使用了空的參數。

CXF-web service之集大成者,想要學好web service,必須會

我們只需要修改以下紅線部分,給賦值一個我們想要的參數就可以了。


我想好處應該絕對不僅僅在生成代碼上。我從百度知道查到,CXF全面支持JAX-WS,並提供各種綁定,各種格式,還可以根據實際需要通過代碼生成wsdl,也可以通過wsdl生成代碼。各種maven插件使得集成更容易,也支持spring。而且可插拔的架構,支持XML,也支持非XML。

總之,很牛逼的。別的不說,如果這些理論全都搞明白了,估計就已經是web service的大拿了。


附帶一些常用的生成的命令:

-d 指定要產生代碼所在目錄


-client 生成客戶端測試web service的代碼


-server 生成服務器啟動web service的代碼


-impl 生成web service的實現代碼


-ant 生成build.xml文件


-all 生成所有開始端點代碼:types, service proxy, service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.


分享到:


相關文章: