Apache CXF框架是一個有發展前景的開放原始碼WebServices框架,也是構建SOA架構應用的利器。本書採用案例原始程式解說方式,全面介紹ApacheCXF框架的功能。
每一個ApacheCXF框架的功能主題,都透過一個或多個實際的案例場景進行闡述。每一個案例場景,都有原始程式碼程式範例、架構描繪和程式實現說明。最終目的是幫助讀者全方位地瞭解ApacheCXF框架能實現的功能,在實際工作中應用這些方法和程式設計。既可以作為ApacheCXF框架的學習指南,也可以提供給軟體發展工程師在設計方面進行參考。
案例專案原始程式碼,可在佳魁官網www.topteam.cc 下載。
適用:軟體設計師、軟體發展工程師和一些正在進行SOA開發的開發人員。
作者簡介:
任鋼
軟體工程碩士,高級工程師,從事十多年的企業級軟體應用開發。現任天維爾通訊技術有限公司的研發總監。
章節試閱
前言
軟體架構的實現模式是一個漸進的過程。從以前的過程導向、物件導向,到後來的元件導向、整合導向,接著又進化到現在的服務模式導向。這時候,一個非常時髦的詞——SOA 就出現在我們的面前。
SOA 是一個沉重的話題。我很早就接觸了這個概念。那時既年輕也輕狂,覺得SOA 無非就是那麼幾個已經耳熟能詳的單字組合。SOA 的確出現得很早,但實際使用非常艱難。僅有一些空洞的解決方案和讓人發炫的理想場景。在這樣高不可及的光芒下,我們只是空喊一些口號,創造著各種新鮮、時髦和美好的詞彙與概念,
可沒有一個明確可以下手的地方。如何讓SOA 進入百姓家,這似乎成為了一個不可能完成的工作。
Web Services 的出現,似乎給了我們尋找光明的希望。同時,Java 平台對WebServices 的支援,也給了我們實現SOA 的利器。
以Java 標準為基礎的的開放原始碼Web Services 框架,我最早接觸的是ApacheAxis,當時還撰寫了以Axis 框架為基礎的擴充框架。後來與一些公司的開發團隊接觸,才知道Apache 還有一個開放原始碼Web Services 框架,即Apache CXF。這是一個合併過來的產品。這樣開發人員又多了一個開放原始碼Web Services 框架選擇,而且這個開放原始碼框架整合了ESB 和Web Services,所以我對Apache
CXF 未來在的發展前景還是充滿著信心的。對於Java 支援SOA,也有很長的時間了,但關於SOA 的方案都是一些大企業的平台,有點陽春的感覺。對於一些小企業,採用一種重量級的工具似乎有一些不堪重負或得不償失。而Apache CXF 框架則是一個輕量級的開放原始碼Web Services 框架,在這個框架上完全可以構築一個企業級的SOA 平台。正是在這個理念的基礎上,我認真地學習了Apache CXF框架,並把在這個學習過程中的體會、經驗和一些應用實例貢獻給讀者。
在本書的撰寫中, 主要參考了Apache CXF 官方網站的資訊。畢竟這是關於Apache CXF 最權威的官方資訊來源。在參考資料中,我比較喜歡IBM 的相關網站,IBM 的技術網站一般都站在比較先進的領域來說明、討論和分析問題,所以,書中有一些內容也是擷取或參考了IBM 技術網站的思想和內容。
本書涵蓋的內容較多,可以毫不誇張地說,書中的很多章節都可以獨立地撰寫出一本很厚的書籍。正是出於這樣的考慮,筆者不能對一些技術做詳細描述,有的內容也只是蜻蜓點水地簡單說明一下。本書最大的特點是實用性。對於SOA 和WebServices 的概念,以及其中的各方面的內容,都有很多相關的書籍來進行闡述。作為本書的基本概念,我也介紹了一些關於這方面的內容。對於每一個實例,都進行了不止一次的撰寫、偵錯和測試。我可以負責任地說每一個實例都是可以執行的。對於我每一個有關的主題,最後都是透過一個實際的案例(包含來源程式)進行闡述的。這本書不是一本介紹理論的書,而是充滿了各種程式碼實現方式的工具書籍。
當然,閱讀本書也要具備一定的基礎知識,不然有些術語和解釋還是較難了解的。
前言
軟體架構的實現模式是一個漸進的過程。從以前的過程導向、物件導向,到後來的元件導向、整合導向,接著又進化到現在的服務模式導向。這時候,一個非常時髦的詞——SOA 就出現在我們的面前。
SOA 是一個沉重的話題。我很早就接觸了這個概念。那時既年輕也輕狂,覺得SOA 無非就是那麼幾個已經耳熟能詳的單字組合。SOA 的確出現得很早,但實際使用非常艱難。僅有一些空洞的解決方案和讓人發炫的理想場景。在這樣高不可及的光芒下,我們只是空喊一些口號,創造著各種新鮮、時髦和美好的詞彙與概念,
可沒有一個明確可以下手的地方。...
目錄
01 Apache CXF 概述
1.1 Apache CXF 框架簡介
1.2 Apache CXF 的基本特徵
1.3 Apache CXF 的功能特性
1.3.1 支援許多標準
1.3.2 支援多種傳輸協定和協定綁定、資料綁定和資料格式
1.3.3 靈活部署
1.3.4 支援多種語言程式設計
1.3.5 支援的工具
1.4 Apache CXF 的歷史
02 相關基礎知識
2.1 SOA 基礎知識
2.1.1 SOA 的定義、基本特徵和優點
2.1.2 SOA 參考架構
2.1.3 SOA 相關技術標準
2.1.4 SOA 的設計原則
2.1.5 SOA 與Web Services 的關係
2.2 Web Services 的相關標準
2.2.1 Web Services 簡介
2.2.2 Web Services 架構及其WS 標準簡介
2.2.3 基本Web Services 標準——WSDL、SOAP、UDDI
2.2.4 擴充的WS 標準——WS-* 標準
2.3 Java 中關於SOA 的相關標準
2.3.1 JAX-RPC 標準
2.3.2 JAX-WS 標準
2.3.3 JAX-RS 標準
2.3.4 JAXB 標準
03 Apache CXF 開發環境介紹
3.1 Apache CXF 安裝套件的下載和說明
3.2 Apache CXF 框架支撐和執行環境
3.3 架設Apache CXF 開發環境
3.3.1 用Ant 來建立專案
3.3.2 用Maven 來建立專案
3.3.3 用Eclipse 整合Apache CXF
04 簡單的Apache CXF 實例
4.1 一個簡單的JAX-WS 服務程式
4.2 利用Spring 建立Web Services 服務程式
4.3 Servlet 容器中的Web Services 實現
05 Apache CXF 的架構系統和基礎
5.1 Apache CXF 的核心架構
5.2 Bus 介紹
5.3 訊息(Messaging)和攔截器(Interceptors)元件介紹
5.4 前端程式設計模型(Frontend)元件介紹
5.5 服務模型(Service Model)元件說明
5.6 資料綁定(Data Bindings)元件
5.7 綁定(Bindings)元件3.1 加速度計
5.8 傳輸協定(Transport)元件
5.9 CXF 的註釋
5.10 案例場景說明
06 CXF 的前端應用
6.1 CXF 的前端應用(Frontends)簡介
6.2 以程式優先(Java First)為基礎的JAX-WS 前端模式實現
6.2.1 以程式優先(Java First)為基礎的Web Services 的步驟
6.2.2 以程式優先(Java First)為基礎的Web Services 的實例
6.3 以WSDL 優先(WSDL First)為基礎的JAX-WS 前端模式實現
6.3.1 以WSDL 優先為基礎的JAX-WS 前端模式實現的步驟
6.3.2 以WSDL 優先為基礎的JAX-WS 前端模式實現的簡單實例
6.3.3 以WSDL 優先為基礎的JAX-WS 前端模式實現的複雜實例
6.4 簡化前端模式(Simple Frontend)
6.4.1 簡化前端模式(Simple Frontend)介紹
6.4.2 採用Apache CXF 簡化前端實現的實例
6.4.3 採用Apache CXF 簡化前端實現的Servlet 實例
6.5 Provider/Dispatch 服務前端應用模式
6.5.1 Provider/Dispatch 服務前端應用模式介紹
6.5.2 採用DOMSource(message)的Provider/Dispatch 前端模式實現
實例
6.5.3 採用DOMSource(Payload)的Provider/Dispatch 前端模式實現
實例
6.5.4 採用SOAPMessage 的Provider/Dispatch 前端模式實現實例
6.6 採用Apache CXF 的動態用戶端技術
6.6.1 Apache CXF 的動態用戶端技術介紹
6.6.2 Apache CXF 的動態用戶端技術實例
6.6.3 Apache CXF 的動態用戶端實現的Servlet 實例
07 CXF 的資料綁定
7.1 資料綁定(DataBindings)介紹
7.2 JAXB 資料綁定
7.2.1 JAXB 介紹
7.2.2 Apache CXF 實現JAXB 的方式
7.2.3 Apache CXF 實現JAXB 資料綁定例子
7.3 Aegis 資料綁定
7.3.1 Aegis 介紹
7.3.2 採用簡化前端、Aegis 資料綁定的實例實現
7.3.3 採用簡化前端Aegis 資料綁定的Servlet 實例實現
7.4 MTOM 使用
7.4.1 MTOM 簡介
7.4.2 CXF 實現MTOM 的方式
7.4.3 CXF 實現MTOM 的實例
7.4.4 CXF 實現MTOM 的Servlet 實例
7.5 XMLBeans 的使用
7.5.1 XMLBeans 簡介
7.5.2 CXF 實現XMLBeans 的方式
7.5.3 實現簡化前端XMLBeans 資料綁定的實例
7.5.4 採用簡化前端XMLBeans 資料綁定的Servlet 實例實現
08 CXF 的傳輸
8.1 CXF 支援的傳輸協定
8.2 HTTP 傳輸協定
8.2.1 CXF 支援HTTP 傳輸協定介紹
8.2.2 Spring 植入HTTP 傳輸並以Servlet 為基礎的實現
8.3 JMS 傳輸協定
8.3.1 JMS 簡介
8.3.2 在Apache CXF 中使用JMS
8.3.3 Spring 植入實現JMS 的例副程式
8.3.4 Spring 植入實現JMS 的Servlet 例副程式
8.4 Local 傳輸協定
8.4.1 Apache CXF 的Local 傳輸協定介紹
8.4.2 CXF 的Local 設定和使用
8.4.3 實現簡化前端Local 傳輸的實例
8.4.4 實現JAX-WS 標準並採用Local 傳輸的實例
8.4.5 Spring 植入實現JAX-WS 標準並採用Local 傳輸的實例
09 CXF 的設定、偵錯和記錄檔
9.1 CXF 的設定
9.1.1 CXF 設定概述
9.1.2 Bus 設定
9.1.3 Features 列表
9.1.4 JMX 管理
9.2 CXF 的記錄檔管理
9.2.1 CXF 記錄檔的設定
9.2.2 定義記錄檔等級
9.2.3 使用Log4J 記錄檔方式
9.2.4 使用SLF4J 記錄檔方式
9.3 Apache CXF 的偵錯管理
9.3.1 Eclipse IDE
9.3.2 Tcpmon
9.3.3 WSMonitor
9.3.4 SOAP UI
9.3.5 Wireshark
10 CXF 的工具
10.1 Ant 工具(2.0.x 和2.1.x)
10.2 在Eclipse 的CXF工具
10.3 Java 程式產生Web Services
10.4 Java 程式產生WSDL
10.5 WSDL 產生Java 程式
10.6 WSDL 轉化為Javascript
10.7 WSDL 產生服務(Service)
10.8 WSDL 產生SOAP
10.9 WSDL 產生XML
10.10 WSDL 驗證器
10.11 XSD 產生WSDL
11 CXF 實現RESTful 服務
11.1 RESTful 服務介紹
11.1.1 RESTful 服務概述
11.1.2 RESTful 原則
11.1.3 建立以REST 為基礎的 Web Services
11.2 Apache CXF 的RESTful 實現方式
11.2.1 JAX-RS 實現方式
11.2.2 基本特徵
11.2.3 支援的特徵
11.2.4 其他先進功能
11.3 JAX-WS Provider 和Dispatch 實現方式
11.4 HTTP 綁定方式
11.5 CXF 實現RESTful 服務的實例說明
11.5.1 CXF 採用HttpClient 實現基本的RESTful 應用
11.5.2 CXF 採用HttpClient 在Servlet 實現基本的RESTful 應用
11.5.3 CXF 採用WebClient 實現RESTful 應用
11.5.4 CXF 採用WebClient 在Servlet 實現基本的RESTful 應用
11.5.5 JAX-WS Provider 和Dispatch 實現RESTful 方式
11.5.6 Http_Binding 實現以XML 為基礎的RESTful 方式
11.5.7 Http_Binding 在Servlet 實現以XML 為基礎的RESTful 方式
11.5.8 Http_Binding 實現以JSON 為基礎的RESTful 方式
11.5.9 Http_Binding 在Servlet 實現以JSON 為基礎的RESTful 方式
12 CXF 對動態語言的支援
12.1 CXF 對JavaScript 等語言的支援
12.1.1 用JavaScript 來實現Web Services
12.1.2 用E4X(ECMAScript for XML)來實現Web Services
12.1.3 部署Script 服務
12.2 CXF 以Javascript 等語言為基礎實現Web Services 的實例
12.2.1 用JavaScript 呼叫CXF 的Web Services
13 CXF 對WS-* 的支援
13.1 Apache CXF 支援WS-Addressing
13.1.1 WS-Addressing 簡介
13.1.2 Apache CXF 的WS-Addressing 設定
13.1.3 Apache CXF 的WS-Addressing 的實現實例
13.2 Apache CXF 支援WS-Policy
13.2.1 WS-Policy 簡介
13.2.2 Apache CXF 使用WS-Policy 框架
13.2.3 Apache CXF 的WS-Policy 的實現實例
13.3 Apache CXF 支援WS-ReliableMessaging
13.3.1 WS-ReliableMessaging 簡介
13.3.2 Apache CXF 使用WS-ReliableMessaging 的設定
13.3.3 Apache CXF 的WS-ReliableMessaging 的實現實例
13.4 Apache CXF 支援WS-Security
13.4.1 WS-Security 介紹
13.4.2 Apache CXF 使用WS-Security 的設定
13.4.3 Apache CXF 的WS-Security 的實現實例
13.5 Apache CXF 支援WS-SecurityPolicy
13.5.1 WS-SecurityPolicy 簡介
13.5.2 Apache CXF 使用WS-SecurityPolicy 的設定
13.5.3 Apache CXF 的WS-SecurityPolicy 的實現實例
13.6 Apache CXF 支援WS-Trust
13.6.1 WS-Trust 簡介
13.6.2 Apache CXF 使用WS-Trust 的設定
13.7 Apache CXF 支援WS-SecureConversation
13.7.1 WS-SecureConversation 介紹
13.7.2 Apache CXF 使用WS-SecureConversation 的設定
14 CXF 的進階功能
14.1 CXF 的Feature 功能
14.1.1 CXF 的Feature 功能說明
14.1.2 撰寫和設定CXF 的Feature
14.1.3 CXF 的Feature 列表
14.1.4 CXF 實現Feature 的實例
14.2 CXF 的攔截器(Interceptors)和相位器(Phases)
14.2.1 CXF 的攔截器(Interceptors)和相位器(Phases)介紹和使用
14.2.2 CXF 的攔截器(Interceptors)的實例
14.3 CXF 的代理(invoker)
14.3.1 CXF 的代理(invoker)功能說明
14.3.2 CXF 的代理(invoker)的實現實例
14.4 CXF 的MER(Multiplexed EndpointReferences)
14.5 CXF 的基礎服務
14.6 CXF 的服務路由(Service Routing)
15 CXF 的部署和發佈
15.1 應用伺服器的實際設定指南
15.1.1 Tomcat
15.1.2 JBoss
15.1.3 WebLogic
15.1.4 WebSphere
15.1.5 OC4J
15.2 在Spring 內嵌入CXF
參考文獻
01 Apache CXF 概述
1.1 Apache CXF 框架簡介
1.2 Apache CXF 的基本特徵
1.3 Apache CXF 的功能特性
1.3.1 支援許多標準
1.3.2 支援多種傳輸協定和協定綁定、資料綁定和資料格式
1.3.3 靈活部署
1.3.4 支援多種語言程式設計
1.3.5 支援的工具
1.4 Apache CXF 的歷史
02 相關基礎知識
2.1 SOA 基礎知識
2.1.1 SOA 的定義、基本特徵和優點
2.1.2 SOA 參考架構
2.1.3 SOA 相關技術標準
2.1.4 SOA 的設計原則
2.1.5 SOA 與Web Services 的關係
2.2 Web Services 的相關標準
2.2.1 Web Services 簡介...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。