參照Axis2-1.0的bin版本下提供的文檔soapmonitor-module.html http://ws.apache.org/axis2/1_1/soapmonitor-module.html?來使用SOAPMonitor來監測SOAP消息發送時的發送消息和接收的消息。
要使用SOAPMonitor,前提是瀏覽器要安裝Java plug-in1.3以上的版本,如果沒有安裝需要另外安裝,并可以在瀏覽器中進行設置,在控制面板->java 中設置 “網絡配置”,采用“使用瀏覽器”,如果SOAPMonitor能夠正常使用,可以通過瀏覽器觀察
http://localhost:8080/axis2/SOAPMonitor
8080 是應用服務所使用的端口。 soapmonitor-1.0.mar文件本身就存在于module目錄下,只是axis2默認時出于安全考慮沒有使用。如果要使用SOAPMonitor模塊,需要改變的內容有:
1、編輯axis2.xml文件,在模塊注釋一下添加模塊的引用
???? <module ref="soapmonitor"/>
2、添加自定義的phase
在axis2.xml文件中,在"inflow","outflow","INfaultflow","OutFaultFlow"部分有標志user can add his own phases to this area' 注冊之后添加soapmonitorPhase 來定義soapmonitorPhase引用soapmonitor.mar文件中的module.xml文件。axis2.xml文件中添加soapmonitorPhase后如下所示:
<phaseOrder type="inflow">
??????? <!--System pre defined phases-->
??????? <phase name="TransportIn"/>
??????? <phase name="PreDispatch"/>
??????? <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
??????????? <handler name="AddressingBasedDispatcher"
???????????????????? class="org.apache.axis2.engine.AddressingBasedDispatcher">
??????????????? <order phase="Dispatch"/>
??????????? </handler>
??????????? <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>
??????????? <handler name="SOAPMessageBodyBasedDispatcher"
???????????????????? class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
??????????????? <order phase="Dispatch"/>
??????????? </handler>
??????????? <handler name="InstanceDispatcher"
???????????????????? class="org.apache.axis2.engine.InstanceDispatcher">
??????????????? <order phase="PostDispatch"/>
??????????? </handler>
??????? </phase>
??????? <!--System pre defined phases-->
??????? <!--After Postdispatch phase module author or or service author can add any phase he want-->
??????? <phase name="userphase1"/>
??????? <phase name="soapmonitorPhase"/>
??? </phaseOrder>
??? <phaseOrder type="outflow">
??????? <!--user can add his own phases to this area-->
??????? <phase name="userphase1"/>
??????? <phase name="soapmonitorPhase"/>
??????? <!--system predefined phase-->
??????? <!--these phase will run irrespective of the service-->
??????? <phase name="PolicyDetermination"/>
??????? <phase name="MessageOut"/>
??? </phaseOrder>
??? <phaseOrder type="INfaultflow">
??????? <!--user can add his own phases to this area-->
??????? <phase name="userphase1"/>
??????? <phase name="soapmonitorPhase"/>
??? </phaseOrder>
??? <phaseOrder type="Outfaultflow">
??????? <!--user can add his own phases to this area-->
??????? <phase name="userphase1"/>
??????? <phase name="soapmonitorPhase"/>
??????? <phase name="PolicyDetermination"/>
??????? <phase name="MessageOut"/>
??? </phaseOrder>
3、編輯web.xml文件
為了使得servlet能和applet進行交互,需要修改web.xml文件,在web.xml文件中添加如下的配置信息
?
<servlet>
?????? <servlet-name>SOAPMonitorService</servlet-name>
?????? <display-name>SOAPMonitorService</display-name>
?????? <servlet-class>
???????? org.apache.axis2.soapmonitor.servlet.SOAPMonitorService
?????? </servlet-class>
?????? <init-param>
????????? <param-name>SOAPMonitorPort</param-name>
????????? <param-value>5001</param-value>
?????? </init-param>
?????? <load-on-startup>1</load-on-startup>
??? </servlet>
??? <servlet-mapping>
??????? <servlet-name>SOAPMonitorService</servlet-name>
??????? <url-pattern>/SOAPMonitor</url-pattern>
??? </servlet-mapping>
4 、編譯SOAPMonitorApplet.java文件
此文件可以從發source文件中獲得,編譯口令為:
javac -classpath axis2-soapmonitor-1.0.jar SOAPMonitorApplet.java
將編譯生成的文件復制到axis2的根目錄下,也可以直接從axis2.war下的WEB-INF\lib目錄下對axis2-soapmonitor-1.0.jar文件執行jar命令獲得SOAPMonitorApplet*.class文件,執行命令為: WEB-INF\lib>jar -xf axis2-soapmonitor-1.0.jar ,將獲得的文件及目錄復制到webapps\axis2目錄下即可。
5、執行驗證
址欄中輸入http://localhost:8080/axis2/SOAPMonitor 可以看到啟動后界面如下
?