JBoss Fuse - Apache CXF



在本章中,我們將討論什麼是 Apache CXF 以及它如何在開發 SOAP 和 REST Web 服務中提供幫助。

什麼是 Apache CXF?

Apache CXF 是一個 Web 服務開發框架,可用於開發 SOAP 和 REST Web 服務。CXF 完全符合JAX-RS 和 JAX-Ws標準。

它是目前使用最廣泛的 Web 服務開發框架。CXF 從 Axis2 中學習並改進,Axis2 現在正逐漸被 CXF 取代。

CXF 與 Axis2

CXF Axis2
改進

CXF 是目前使用最多的框架。

它在 Axis2 上進行了很多改進

Axis2 正在逐漸被 CXF 取代。

與 CXF 相比,它需要更多程式碼

所需程式碼

與 Axis2 相比,CXF 需要更少的程式碼

Axis2 相對需要更多程式碼

標準合規性

CSF 完全符合 JAX-RS 和 JAX-WS

Axis2 不完全符合 JAX-RS 和 JAX-WS

與 Spring 相容

前端分離

將前端與 JAX-WS 程式碼清晰分離

沒有提供清晰的分離

SOAP

SOAP 代表簡單物件訪問協議。它是一種用於在兩個系統之間透過 Web 服務交換結構化資訊的協議。它主要依賴於 XML 來構建資料,並使用 HTTP 或 SMTP 進行訊息協商和傳輸。

有兩種方法可以開發 SOAP Web 服務:

  • 程式碼優先 - 在這種方法中,WSDL 從程式碼生成。

  • 契約優先 - 在契約優先中,程式碼從 WSDL 生成。

使用 CXF 進行 SOAP 開發

配置 Maven

將以下配置檔案新增到 Maven 的 settings.xml 中。

<profiles>
   <profile>
      <id>Jboss-Fuse</id>
		
      <activation>
         <activeByDefault>true</activeByDefault>
      </activation>
		
      <repositories>
         <repository>
            <id>fusesource</id>
            <url>http://repo.fusesource.com/nexus/content/groups/public/</url>
            <snapshots>
               <enabled>false</enabled>
            </snapshots>
            <releases>
               <enabled>true</enabled>
            </releases>
         </repository>
      </repositories>
		
   </profile>
</profiles>

建立骨架

mvn archetype:generate
-DarchetypeGroupId = org.apache.servicemix.tooling 
-DarchetypeArtifactId = servicemix-cxf-code-first-osgi-bundle 
-DarchetypeVersion=2012.01.0.redhat-60024 
-DgroupId = org.fusesource.example 
-DartifactId = cxf-basic 
-Dversion = 1.0-SNAPSHOT

構建 Web 服務專案.

mvn clean install

使用以下命令將 Web 服務安裝到 Fuse 中.

JBossFuse:karaf@root>install -s mvn:org.fusesource.example/cxf-basic/1.0-SNAPSH

檢查捆綁包是否已註冊 SOQP Web 服務

開啟 URL https://:8181/cxf

SOQP web-service

Web 服務應按如下方式列出。

測試 Web 服務

mvn -Pclient

資訊 - 從類 com.to 建立服務 {http://ws.totorials.com/} PersonService

torials.ws.Person
Invoking getPerson...
getPerson._getPerson_personId = Guillaume
getPerson._getPerson_ssn = 000-000-0000
getPerson._getPerson_name = Guillaume
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.668 s
[INFO] Finished at: 2016-02-15T21:01:20+05:30
[INFO] Final Memory: 10M/37M
[INFO] ------------------------------------------------------------------------
廣告

© . All rights reserved.