列宿乃施于上榮兮 日月才經于柍桭

          ………… 白駒過隙 歲月如斯 夢縈回繞 心靈之聲
          posts - 57, comments - 8, trackbacks - 0, articles - 41
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          基于Axis 1.X的Web Service開發(二)

          Posted on 2007-04-03 11:35 默認為零 閱讀(228) 評論(0)  編輯  收藏 所屬分類: 技術

            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文件,將下面的兩部分代碼直接加入其中相應的位置
            第一部分:

              <handler name="soapmonitor"   type="java:org.apache.axis.handlers.SOAPMonitorHandler">
                  
          <parameter name="wsdlURL"   value="/axis/SOAPMonitorService-impl.wsdl"/>
                  
          <parameter name="namespace"   value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/>
                  
          <parameter name="serviceName" value="SOAPMonitorService"/>
                  
          <parameter name="portName" value="Demo"/>
              
          </handler>

            第二部分:

              <service name="SOAPMonitorService" provider="java:RPC">
                  
          <parameter name="allowedMethods" value="publishMessage"/>
                  
          <parameter name="className"   value="org.apache.axis.monitor.SOAPMonitorService"/>
                  
          <parameter name="scope" value="Application"/>
              
          </service>


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

              <service name="Hello" provider="java:RPC">
                  
          <parameter name="allowedMethods" value="sayHello"/>
                  
          <parameter name="className" value="HelloWorld"/>
              
          </service>

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

              <requestFlow>
                  
          <handler type="soapmonitor"/>
              
          </requestFlow>
              
          <responseFlow>
                  
          <handler type="soapmonitor"/>
              
          </responseFlow>


            最后的樣子是:

              <service name="HelloWorld" provider="java:RPC">
                  
          <requestFlow>
                      
          <handler type="soapmonitor"/>
                  
          </requestFlow>
                  
          <responseFlow>
                      
          <handler type="soapmonitor"/>
                  
          </responseFlow>
                  
          <parameter name="allowedMethods" value="sayHello"/>
                  
          <parameter name="className" value="HelloWorld"/>
              
          </service>

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

              <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
                  
          <handler name="soapmonitor" type="java:org.apache.axis.handlers.SOAPMonitorHandler">
                      
          <parameter name="wsdlURL" value="/axis/SOAPMonitorService-impl.wsdl"/>
                          
          <parameter name="namespace" value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/>
                      
          <parameter name="serviceName" value="SOAPMonitorService"/>
                      
          <parameter name="portName" value="Demo"/>
                  
          </handler>

                  
          <service name="SOAPMonitorService" provider="java:RPC">
                      
          <parameter name="allowedMethods" value="publishMessage"/>
                      
          <parameter name="className" value="org.apache.axis.monitor.SOAPMonitorService"/>
                      
          <parameter name="scope" value="Application"/>
                  
          </service>
              
          </deployment>

            啟動服務,在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功能,可以找來看看。

          主站蜘蛛池模板: 威信县| 日喀则市| 桐庐县| 自贡市| 胶州市| 齐河县| 无极县| 桓台县| 芦溪县| 兴安县| 沅陵县| 准格尔旗| 土默特左旗| 榆中县| 公安县| 鄂伦春自治旗| 海安县| 夏河县| 竹山县| 密云县| 唐河县| 昌平区| 繁昌县| 施秉县| 乐都县| 连城县| 临颍县| 福泉市| 商南县| 依兰县| 明水县| 樟树市| 宁都县| 兰考县| 修武县| 宿迁市| 富阳市| 禄劝| 淮阳县| 临海市| 读书|