拾貝殼

          走過的路
          隨筆 - 39, 文章 - 1, 評論 - 14, 引用 - 0
          數據加載中……

          axis userguide(2)

          發布service
          有2種發布方式,一種是實例發布,一種是描述符發布
          實例發布很簡單
            把我們的java源文件拷貝到axis目錄下,改擴展名為jws
            然后就可以直接訪問了,例如:
          java samples.userguide.example2.CalcClient -p8080 add 2 5
           他將調用add方法,傳遞的2個變量分別為2和5。
          很顯然,第一種方法有很多弊端,比如需要源文件,不能有包路徑等等
          描述符發布
          一個最簡單的例子如下:
          <deployment xmlns="http://xml.apache.org/axis/wsdd/"
              xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
            <service name="MyService" provider="java:RPC">
              <parameter name="className" value="samples.userguide.example3.MyService"/>
              <parameter name="allowedMethods" value="*"/>
            </service>
          </deployment>
          一個服務是一個targeted chain ,可能包含下面的一些或者全部:請求Handler,pivot Handler 支點Handler,響應Handler。支點hander在服務中叫做provider,在例子中我們的provider是java:RPC,他被axis內嵌,代表了Java RPC service,具體的類是org.apache.axis.providers.java.RPCProvider.
          我們告訴RPCProvider 我們要調用的服務MyService,并以參數的形式告訴他具體的目標以及可以被調用的方法。
          我們也可以給我們要調用的對象設置作用范圍scope,和servlet的scope一樣,有request,session,application.
          我們需要把這個描述符定義的內容告訴應用服務器才能真正提供我們需要的服務。
          如果已經部署axis到tomcat,我們可以這樣發布
          org.apache.axis.client.AdminClient deploy.wsdd
          這樣我們的服務就可以通過soap來訪問了
          測試一下
          java samples.userguide.example3.Client
            -lhttp://localhost:8080/axis/services/MyService "test me!"
          可以通過下面來查看所有已經部署的服務
          java org.apache.axis.client.AdminClient list
          來看看更進一步的應用,使用一下request handler
          <deployment xmlns="http://xml.apache.org/axis/wsdd/"
              xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
            <!-- define the logging handler configuration -->
            <handler name="track" type="java:samples.userguide.example4.LogHandler">
              <parameter name="filename" value="MyService.log"/>
             </handler>

            <!-- define the service, using the log handler we just defined -->
            <service name="LogTestService" provider="java:RPC">
              <requestFlow>
                <handler type="track"/>
              </requestFlow>

              <parameter name="className" value="samples.userguide.example4.Service"/>
              <parameter name="allowedMethods" value="*"/>
            </service>
          </deployment>
          這個例子會在客戶端掉用LogTestService的時候,先調用samples.userguide.example4.LogHandler作記錄操作
          遠程管理
          默認狀態下,axis只允許在axis部署的機器上使用管理請求,如果希望在其他的機器上進行管理操作可以參照下面的例子

          <service name="AdminService" provider="java:MSG">
            <parameter name="className" value="org.apache.axis.util.Admin"/>
            <parameter name="allowedMethods" value="*"/>
            <parameter name="enableRemoteAdmin" value="true"/>
          </service>
          注意,這樣配置需要作必要的安全配置

          posted on 2008-02-17 12:17 binge 閱讀(614) 評論(0)  編輯  收藏 所屬分類: J2EE 、OPEN SOURCE

          主站蜘蛛池模板: 杂多县| 德令哈市| 介休市| 凤阳县| 宜春市| 宣威市| 军事| 丹巴县| 武威市| 湟中县| 温泉县| 平度市| 宁阳县| 水城县| 黔江区| 河池市| 鲁山县| 汕头市| 东宁县| 彰武县| 门头沟区| 谢通门县| 娄底市| 锡林郭勒盟| 南康市| 张掖市| 界首市| 昌宁县| 北宁市| 仙桃市| 苏尼特右旗| 青岛市| 翁源县| 酉阳| 建昌县| 靖宇县| 利津县| 邛崃市| 瑞丽市| 凯里市| 松潘县|