發布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>
注意,這樣配置需要作必要的安全配置