Apache CXF 是一個開源的 WebService 框架,CXF能夠用來構建和開發 WebService,這些服務能夠支持多種協議,好比:SOAP、POST/HTTP、HTTP ,CXF 大大簡化了WebService而且能夠自然地和 Spring 進行無縫集成。CXF是 Celtrix (ESB框架)和 XFire(webserivice) 合併而成,核心是org.apache.cxf.Bus(總線),相似於Spring的 ApplicationContext,CXF默認是依賴於Spring的,另 CXF 發行包中的jar,若是所有放到lib中,須要 JDK1.6 及以上,不然會報JAX-WS版本不一致的問題。CXF 內置了Jetty服務器 ,它是servlet容器。web
A、與Spring、Servlet作了無縫對接,cxf框架裏面集成了Servlet容器Jettyspring
B、支持註解的方式來發布webserviceapache
C、可以顯示一個webservice的服務列表服務器
D、可以添加攔截器:輸入攔截器、輸出攔截器 :輸入日誌信息攔截器、輸出日誌攔截器、用戶權限認證的攔截器框架
三、使用CXF框架發佈一個WebService編碼
步驟1、url
使用CXF框架發佈WebService需導入CXF框架的相關Jar包,此處引用的cxf版本爲3.1.8,可在官方下載該版本後導入lib目錄中的全部jar包spa
步驟2、日誌
發佈一個帶接口的開發語言排行榜的WebService,編寫接口和實現類以下xml
步驟3、
JaxWsServerFactoryBean是ServerFactoryBean的子類,也是功能擴展類。該類可用來發布WebService,此類必需要在被髮布爲服務的類上添加@WebService註解,若是不加註解,雖然不出錯,但也不會對外暴露任何方法。使用此類生成的wsdl文件更加規範,更重要的是能夠經過添加攔截器攔截請求,具體實現代碼以及代碼解釋以下:
前面的服務發佈包括建立服務類都是硬編碼的方式,額是否可使用配置的方式來發布服務類呢,答案是確定的。這就要同Spring集成了, 因爲CXF的項目已經集成了Spring(自帶了Spring lib)因此CXF的服務都是在Spring的配置文件中完成的。
步驟1、
部署Spring環境,導入CXF和Spring的相關Jar包,此處導入的爲3.1.8的cxf和4.2.3的spring版本
步驟2、
編寫一個操做員工信息的接口和業務實現類,接口中包含添加和查詢員工的方法
包結構和類編寫代碼以下圖:
步驟3、
配置web.xml文件,在web.xml中配置Spring的監聽器,該監聽器用來自動裝配ApplicationContext的配置信息。還要配置CXF的Servlet信息,用來處理WebService的請求,具體配置信息以下,其中<url-pattern>/spring/*</url-pattern>爲過濾路徑,參見上文中的包結構,不一樣的包結構配置不一樣的過濾路徑。
步驟4、
配置ApplicationContext.xml文件,首先按以下截圖添加必要的路徑
接着配置業務實現類,即用來提供方法的EnployeeManagerImpl類。而後配置CXF,咱們須要配置的東西有三樣,分別是業務類接口,業務實現類和輸入輸出攔截器,完成以後便完成了CXF和Spring集成的WebService配置。
步驟5、
啓動工程,當看到相似以下截圖時,證實CXF和Spring集成的服務發佈成功,並公佈了服務中的方法,即上文中添加和查詢員工的方法。