天天看點

WebService-CXF簡介

百度百科

什麼是CXF

Apache CXF = Celtix + Xfire 支援多種協定: •SOAP1.1,1,2 •XML/HTTP •CORBA(Common Object Request Broker Architecture公共對象請求代理體系結構,早期語言使用的WS。C,c++,C#) •并可以與Spring進行快速無縫的整合 •靈活的部署:可以運作在Tomcat,Jboss,Jetty(内置),IBMWS,BeaWL上面。

1、jax-ws是Sun公司釋出的一套開發WebService服務的标準。早期的标準如jax-rpc已經很少使用(在目前的jdk當中也沒有附帶這個工具,axis就是使用的這個标準。)。而cxf就是在新标準jax-ws下開發出來的WebService,jax-ws也内置到了jdk1.6當中。(對于2006年以前的jax-rpc(remoteprocess call)就不要再去研究了)。

2、關于更多Jax-ws規範的說明請見官方釋出的文檔:本目錄下的jax-ws.pdf。

3、關于與Spring的整合,将後後面的章節講解。最終将我們的服部署到Tomcat伺服器上。

4、在CXF之前的許多WebService架構如:axis,xFire有興趣的同學可以自己去了解一下。

WebService-CXF簡介
WebService-CXF簡介

1、需要說明的是:我下載下傳的是最新版本的cxf架構,它基于jdk1.7建立,目前我們機上安裝的都是jdk1.6.

等一會兒對于使用cxf2.4生成的用戶端代碼要進行适當的調整

WebService-CXF簡介

Bus

Bus是CXF架構的支撐.CXF Bus由spring配置檔案構成(cxf.xml),在servlet初始化時

通過SpringBusFactory加載,它為所有終端定義了公共的上下文.它織入了所有運作

時的結構元件并提供了一個公共的應用上下文.SpringBusFactory掃描并加載類路徑

下的META-INF/cxf目錄并從以下檔案建構上下文.

META-INF/cxf/cxf.xml

META-INF/cxf/cxf-extension.xml

META-INF/cxf/cxf-property-editors.xml

XML檔案是安裝CXF類庫的一部分.CXF内部使用Spring配置.cxf.xml檔案中bus定義如

下:

<bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl" />

核心bus元件是CXFBusImpl,該類更多扮演攔截器供應商的角色對于終端出入的請求.

這些攔截器一旦應用,即可用于上下文中所有的終端.cxf.xml檔案也定義了其他的組

件,比如BindingFactoryManager,ConduitFactoryManager等等.這些元件可用于bus

的擴充.可以使用getExtension()方法這些元件.注冊這些元件以用于擷取或更新服

務終端級别參數如服務綁定,傳輸協定,中轉等等.

--------------

Frontend-前端:

Frontend

CXF提供了前端模組化的概念,可以使用不同的前端API建立ws.這些API使用簡單工廠

bean和JAX-WS實作建立ws.可以建立動态ws用戶端.CXF支援的前端主要是JAX-WS.

---------

Messageandintercetpors:

消息和攔截器

CXF架構中重要的元件之一是攔截器元件.攔截器攔截用戶端和伺服器間的消息.在

CXF,這通過攔截器鍊的概念實作.攔截器鍊是CXF運作時的核心功能.鍊中的每個攔截

器是可配的,使用者可以控制他的執行.

架構的核心的是攔截器接口,它定義了兩個方法handleMessage和handleFault,都攜

帶Message類型作為參數.

攔截器通常分組成各階段.每個階段執行特定的消息處理,每個階段又被添加到攔截

器鍊中,是以,鍊有時有序的攔截器階段的清單.典型的ws終端有三個連接配接器鍊:

Inbound messages chain(入消息鍊)

Outbound messages chain(出消息鍊)

Error messages chain(錯誤消息鍊)

内置攔截器如日志,安全,也可以自定義攔截器.

-----

Service Model-主要用于生成wsdl檔案的各個元素。

模組化service,建立各種WSDL元素如操作,綁定,終端,schema等等.

如下顯示了服務模型中的各個元件:

-------

Databinding

資料綁定是ws開發的關鍵.它意味着java對象和xml元素之間的映射.資料綁定元件執

行這一工作.CXF最新版本使用JAXB2.1.JAXB使用注解定義java對象和XML之間的映射.如下:

@XmlRootElement(name="processOrder",

         namespace="http://localhost/orderprocess")

@XmlAccessorType(XmlAccessType.FIELD)

@XmlType(name="processOrder",namespace="http://localhost/orderprocess")

public class OrderProcess {

  @XmlElement(name="arg0",namespace="")

  privateorder.Order arg0;

  //Gettter and Setter

  …

}

-----------

協定綁定:protocol bindings

CXF支援以下形式的綁定:

SOAP1.1

SOAP1.2

CORBA

Pure XML

--

資料傳輸——transport

CXF支援以下資料傳輸方式:

HTTP

CORBA

JMS

LOCAL

WebService-CXF簡介

安裝CXF的其他支援項目:

lAnt lTomcat l并設定以下環境變量: •JAVA_HOME  •CXF_HOME •ANT_HOME •CATALINA_HOME •Path =%JAVA_HOME%\bin;%CXF_HOME%\bin;%CATALINA_HOME%\bin;%ANT_HOME%\bin •CLASSPATH=.;%CXF_HOME%\lib\cxf-manifest.jar ;.\build\classes

1、為什麼要用到ant這個工具呢?Ant做為一種工具已經廣泛被使用,并且曆史悠久。使用ant的内置指令,可以編譯java源檔案(javac),運作java檔案(java),給class檔案打包(jar、war、ear),也可以建立(mkdir)、删除(del)、拷貝(copy),甚至可以使用ant執行sql檔案。由于ant是用xml語言寫成的檔案,并取預設名為build.xml檔案。是以,今後大家應該在見到名為build.xml檔案時知道這是一個ant的檔案。

2、預設在Eclipse和MyEclipse的對ant有内建的支援。大家可以在MyEclipse中任意項目中建立一個檔案叫build.xml檔案,你會發現它有不同的圖示(上面有個小螞蟻)。