??? axis2 有三種配置文件 用來配置系統.第一個是用來配置整個系統(全局配置)--axis2.xml.第二個是配置一個服務(服務配置),第三個是配置一個module .
??? 1:全局配置----axis2.xml
?????????所有axis2啟動時需要的配置都在包括在axis2.xml文件中.在這個文件中,我們可以看到有6個頂級節點,列表如下:
????????
Parameter
Transport Receiver
Transport Sender
Phase Order
Module References
Listeners (Observers)
Parameter
????? 這個節點只有一個name屬性,和一個value值.每個頂級的parameter節點定義的值都會被寫到AxisConfiguration 對象的屬性里.因此在系統運行時,我們可以通過AxisConfiguration對象來獲得在axis2.xml中配置的頂級parameter節點的值.配置一個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屬性,代表了數據傳輸的名字,可以是 "http,tcp , smtp , commonshttp stc "?? ,當系統啟動的時候,或者在客戶端設置transport的時候,就可以使用在這里命名的transport,來裝載相應的transport.
??? class屬性 描述了實際的java類 ,這個類必須擴展了transport接口.任何transport都可以有0個或者任意多個參數,如果設置了參數,那么這些參數可以被相應的transpaortReceiver 獲得.
???? Transport Senders
?????????和Transport Receiver一樣,它也是注冊倒系統里, 在以后運行時,用來發送消息.
?<transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
??????? <parameter name="PROTOCOL" locked="xsd:false">HTTP/1.0</parameter>
</transportSender>
??? 這個配置段的屬性解釋和Transport Receiver類似,就不做介紹了.
Phase Order
??? 使用 phase order元素,具體描述在執行鏈中必須被執行的步驟順序.
<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 鏈的硬編碼框架,也就是說不需要擴展或者繼承axis2的什么接口或者類.
具體例子可以看axis2.xml文件.
type 屬性 必須是下面中的一種:
inflow
outflow
INfaultflow
Outfaultflow
在phaseOrder節點里第一級子節點只允許有phase元素.<phase name="Transport"/>
前面已經說了,我們可以改變phaseorder,可以增加自己的phase 和handler,但是必須注意:在axis2的4個 flows里面都有 system pre-defined 的phases, 我們不可以改變他們的順序,你可以在他們的后面增加自己的phase
Module References
如果你想使用一個模塊系統,那么你可以在axis2.xml中增加一個頂級的module節點.
<module ref="addressing"/>
Listeners (Observers)
?axis2中,AxisConfiguration這個類是采用的觀察者模式設計的,所以你可以向類中注冊自己的觀察者類.當AxisConfiguration類發生改變的時候,你的類會被自動調用 目前當以下事件發生時,觀察類就會被觸發:
?
Deploying a Service
Removing a service
Activate/Inactivate Service
Module deploy
Module remove
注冊觀察者是非常有用的,比如,rss更新的時候,你可以通知訂閱者等等.例如:
? <listener class="org.apache.axis2.ObserverIMPL">
????? <parameter name="RSS_URL" >http://127.0.0.1/rss</parameter>
? </listener>
? class屬性指定的類,必須擴展AxisObserver 這個接口,而且存在于classph中.
系統配置就這么多了.
太累了,休息一會,以后再寫剩下的2中配置文件..
2 服務配置 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里面只有一個service那么.aar包的名字就是發布的webservice名字,如果有多個service,那么在這里service元素索指定的那么屬性值就表示webservice的名字.
scope屬性指明了webservice發布后的作用范圍,有"Application","SOAPSession","TransportSession","Request";
targetNamingSpace? :服務的名字空間,在生成wsdl時會用到.
transport:?? 可選的,字面的意思已經很明顯了,不多說了,配置的name就是在axis2.xml文件中指明的transport
parameter屬性,一個service.xml可以有任意多個頂級節點的parameter節點.
parameter里配置的值會被寫到AxisService類的屬性里,在service.xml文件中至少要有一個parameter 名字是ServiceClass 它的value值指定具體執行服務的java類,這個類會被MessageReciever裝載.
operation比較簡單就是用來指明暴露的方法的.不做介紹了.
剩下module的配置,還沒搞懂,先不寫了.
posted on 2006-08-23 18:04
鄧兵野 閱讀(5508)
評論(0) 編輯 收藏 所屬分類:
webservice