Handler的基本概念
J2EE web service中的Handler技術特點非常像Servlet技術中的Filter。我們知道,在Servlet中,當一個HTTP到達服務端時,往往要經過多個Filter對請求進行過濾,然后才到達提供服務的Servlet,這些Filter的功能往往是對請求進行統一編碼,對用戶進行認證,把用戶的訪問寫入系統日志等。相應的,Web服務中的Handler通常也對soap請求和響應包靈活操作,功能非常強大。
使用Axis SOAP Monitor
SOAP Monitor可以監測Axis soap包的內容,它是Axis內置的Handler,不過它默認并沒有發布,我們在需要用到的時候可以發布之。
1、到目錄%TOMCAT_HOME%\webapps\axis下,你會找到SOAPMonitorApplet.java,在命令行中編譯它:
javac -classpath %AXIS_HOME%\lib\axis.jar SOAPMonitorApplet.java
編譯完之后你會看見目錄下多了很多CLASS文件,它們的名字是SOAPMonitorApplet*.class
2、在目錄%TOMCAT_HOME%\webapps\axis\WEB-INF下打開server-config.wsdd文件,將下面的兩部分代碼直接加入其中相應的位置
第一部分:






第二部分:





3、選擇你要監控的服務
以上次的Hello服務為例,在server-config.wsdd中你會找到這段代碼:




在這段代碼中加入以下的代碼:






最后的樣子是:










這樣Hello服務就被SOAP Monitor監控了。
同樣,可以通過depoly-monitor.wsdd的方式發布monitor:














啟動服務,在DOS下切換目錄到%TOMCAT_HOME%\webapps\axis\WEB-INF\目錄下,執行下:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy-monitor.wsdd
然后,在需要監測的web service里面加上<handler type="soapmonitor"/>就可以了。
不過需要注意的是,服務通過JWS方式調用的話SOAP Monitor沒有監控效果。
同樣的道理,為自己的需求實現的Handler都可以通過這樣的方式發布在對應的Web服務中。網上有很多關于諸如日志、數字簽名、加密之類的Handler功能,可以找來看看。