使用axis很easy,在apache網站上把axis下載了後(最新版本1.2.1),把%AXIS_HOME%\webapps\axis整個目錄copy到tomcat的webapps目錄下面,啟動tomcat,瀏覽器中輸入http://localhost:8080/axis就可以了
上面說的只是axis運行起來了,要想布置自己的webservice,axis支持兩種方法:壹種是用JWS(Java Web Service),好處是只要有源碼比如說Hello.java,把他改成Hello.jws後放到%TOMCAT_HOME%\webapps\axis目錄下面就搞定,瀏覽器裏面輸入http://localhost:8080/axis/Hello.jws就可以了,不足的地方是能配置的地方有限(比如說Hello.java裏面的所有public非static方法都會暴露),很多東西沒辦法弄;第二種方法就是使用wsdd(web service deploy description),這個就是在TOMCAT_HOME%\webapps\axis\WEB-INF目錄下寫壹個deploy.wsdd和undeploy.wsdd文件,然後通過java org.apache.axis.client.AdminClient deploy.wsdd就搞定了,卸載這個webservice就用org.apache.axis.client.AdminClient undeploy.wsdd,客戶端輸入http://localhost:8080/axis/services/Hello就可以了
介紹了部署webservice的兩種方法後,下面說說客戶端的訪問方式,也有兩種,壹種是通過axis實現的java裏面的JAX-RPC進行動態調用,另外壹種就是通過服務器端產生的wsdl文件利用WSDL2Java工具生成Client Stub後訪問。通過JAX-RPC的比較簡單,需要提供的有SOAP router URL,service namespace,operation name,operation parameter types,operation return types,看看下面這個例子就明白了:
public SOAPWrapper() {
String location = "http://localhost:8080/axis/services/BookService";
try {
Service service = new Service();
call = (Call)service.createCall();
call.setTargetEndpointAddress(new url(/location));
} catch (Throwable t) {
handleError("SOAPWrapper (constructor) had an Exception.",t);
}
} public void create(Book book) {
try {
call.removeAllParameters();
call.setOperationName("create");
call.addParameter("arg1",qn,ParameterMode.IN);
call.setReturnType(XMLType.AXIS_VOID);
call.invoke(new Object[] {book});
return;
} catch (Throwable t) {
handleError("SOAPWrapper (create) had an Exception.",t);
return;
}
}
程序中的Call和Service是對JAX-RPC中Call和Service的具體實現:org.apache.axis.client.Call implements javax.xml.rpc.Call,org.apache.axis.client.Service implements javax.xml.rpc.Service
第二種客戶端的方法就是利用WSDL2Java產生Client stub後通過stub調用,WSDL2Java的操作對象是service所對應的wsdl文件,這個文件怎麽產生呢?壹種方法前面是由axis自動產生,如前面服務器端的配置所說,無論通過jws或是wsdd的方式,axis都會產生相應的wsdl;還有壹種方式就是利用Java2WSDL對java源文件進行操作也可以產生相應的wsdl文件。