- JBoss Fuse 教程
- JBoss Fuse – 主頁
- JBoss Fuse - ESB 簡介
- 什麼是 Fuse?
- JBoss Fuse – Apache Karaf
- JBoss Fuse – Apache Camel
- JBoss Fuse – Camel 概念
- JBoss Fuse – Apache CXF
- JBoss Fuse – REST Web 服務
- JBoss Fuse – Apache AMQ
- JBoss Fuse – 使用 Camel 的 AMQ
- JBoss Fuse – Fabric
- JBoss Fuse – 子容器
- JBoss Fuse – 問題和解決方案
- JBoss Fuse 有用資源
- JBoss Fuse - 快速指南
- JBoss Fuse - 有用資源
- JBoss Fuse - 討論
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
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] ------------------------------------------------------------------------