??? 1:全局配置----axis2.xml
?????????所有axis2啟動(dòng)時(shí)需要的配置都在包括在axis2.xml文件中.在這個(gè)文件中,我們可以看到有6個(gè)頂級(jí)節(jié)點(diǎn),列表如下:
????????
Parameter
????? 這個(gè)節(jié)點(diǎn)只有一個(gè)name屬性,和一個(gè)value值.每個(gè)頂級(jí)的parameter節(jié)點(diǎn)定義的值都會(huì)被寫到AxisConfiguration 對(duì)象的屬性里.因此在系統(tǒng)運(yùn)行時(shí),我們可以通過AxisConfiguration對(duì)象來獲得在axis2.xml中配置的頂級(jí)parameter節(jié)點(diǎn)的值.配置一個(gè)parameter的正確方法 如下所示:
??? <parameter name="name of the parameter" >parameter value </parameter>
Transport Receiver
????? <transportReceiver name="http"??????????????????????????????????????????????????????????????????????????????????????????? class="org.apache.axis2.transport.http.SimpleHTTPServer">
??????? <parameter name="port" >6060</parameter>
</transportReceiver>
???? transpaortReceiver元素的name屬性,代表了數(shù)據(jù)傳輸?shù)拿?可以是 "http,tcp , smtp , commonshttp stc "?? ,當(dāng)系統(tǒng)啟動(dòng)的時(shí)候,或者在客戶端設(shè)置transport的時(shí)候,就可以使用在這里命名的transport,來裝載相應(yīng)的transport.
??? class屬性 描述了實(shí)際的java類 ,這個(gè)類必須擴(kuò)展了transport接口.任何transport都可以有0個(gè)或者任意多個(gè)參數(shù),如果設(shè)置了參數(shù),那么這些參數(shù)可以被相應(yīng)的transpaortReceiver 獲得.
???? Transport Senders
?????????和Transport Receiver一樣,它也是注冊(cè)倒系統(tǒng)里, 在以后運(yùn)行時(shí),用來發(fā)送消息.
?<transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
??????? <parameter name="PROTOCOL" locked="xsd:false">HTTP/1.0</parameter>
</transportSender>
??? 這個(gè)配置段的屬性解釋和Transport Receiver類似,就不做介紹了.
Phase Order
??? 使用 phase order元素,具體描述在執(zhí)行鏈中必須被執(zhí)行的步驟順序.
<phaseOrder type="inflow">
?????????<phase name="Transport">
??????????????????????? <handler name="RequestURIBasedDispatcher"
???????????????????? class="org.apache.axis2.engine.RequestURIBasedDispatcher">
?????????????????????????<order phase="Dispatch"/>
??????????????????</handler>
??????????????????<handler name="SOAPActionBasedDispatcher"
???????????????????? class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
?????????????????????????<order phase="Dispatch"/>
???????????????????? </handler>
??????? </phase>??????
????? ?? .
???????? .
</phaseOrder>?
令人興奮的是,你可以在這里增加自己的handler,而且在axis2(任何axis版本)中,都沒有handler 鏈的硬編碼框架,也就是說不需要擴(kuò)展或者繼承axis2的什么接口或者類.
具體例子可以看axis2.xml文件.
type 屬性 必須是下面中的一種:
在phaseOrder節(jié)點(diǎn)里第一級(jí)子節(jié)點(diǎn)只允許有phase元素.<phase name="Transport"/>
前面已經(jīng)說了,我們可以改變phaseorder,可以增加自己的phase 和handler,但是必須注意:在axis2的4個(gè) flows里面都有 system pre-defined 的phases, 我們不可以改變他們的順序,你可以在他們的后面增加自己的phase
Module References
如果你想使用一個(gè)模塊系統(tǒng),那么你可以在axis2.xml中增加一個(gè)頂級(jí)的module節(jié)點(diǎn).
<module ref="addressing"/>
Listeners (Observers)
?axis2中,AxisConfiguration這個(gè)類是采用的觀察者模式設(shè)計(jì)的,所以你可以向類中注冊(cè)自己的觀察者類.當(dāng)AxisConfiguration類發(fā)生改變的時(shí)候,你的類會(huì)被自動(dòng)調(diào)用 目前當(dāng)以下事件發(fā)生時(shí),觀察類就會(huì)被觸發(fā):
?
注冊(cè)觀察者是非常有用的,比如,rss更新的時(shí)候,你可以通知訂閱者等等.例如:
? <listener class="org.apache.axis2.ObserverIMPL">
????? <parameter name="RSS_URL" >http://127.0.0.1/rss</parameter>
? </listener>
? class屬性指定的類,必須擴(kuò)展AxisObserver 這個(gè)接口,而且存在于classph中.
系統(tǒng)配置就這么多了.
太累了,休息一會(huì),以后再寫剩下的2中配置文件..
2 服務(wù)配置 service.xml
??? <service name="name of the service" scope="name of the scope" targetNamespace="target namespase for the service">
??? <description> The description of the service? </description>?
??? <transports>
?????? <transport>HTTP</transport>
??? </transports>
???
??? <schema schemaNamespace="schema namespace"/>
????
??? <messageReceivers>
??????????? <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
???????????????????????????? class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
??? </messageReceivers>
????
???? <parameter name="ServiceClass"???? locked="xsd:false">org.apache.axis2.sample.echo.EchoImpl</parameter>
???
??? <operation name="echoString" mep="operation MEP">
??????? <actionMapping>Mapping to action</actionMapping>
??????? <module ref=" a module name "/>
??????? <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
??? </operation>
? </service>
如果.aar里面只有一個(gè)service那么.aar包的名字就是發(fā)布的webservice名字,如果有多個(gè)service,那么在這里service元素索指定的那么屬性值就表示webservice的名字.
scope屬性指明了webservice發(fā)布后的作用范圍,有"Application","SOAPSession","TransportSession","Request";
targetNamingSpace? :服務(wù)的名字空間,在生成wsdl時(shí)會(huì)用到.
transport:?? 可選的,字面的意思已經(jīng)很明顯了,不多說了,配置的name就是在axis2.xml文件中指明的transport
parameter屬性,一個(gè)service.xml可以有任意多個(gè)頂級(jí)節(jié)點(diǎn)的parameter節(jié)點(diǎn).
parameter里配置的值會(huì)被寫到AxisService類的屬性里,在service.xml文件中至少要有一個(gè)parameter 名字是ServiceClass 它的value值指定具體執(zhí)行服務(wù)的java類,這個(gè)類會(huì)被MessageReciever裝載.
operation比較簡單就是用來指明暴露的方法的.不做介紹了.
剩下module的配置,還沒搞懂,先不寫了.