Axis是經典Web Service框架,支持Stubs模式(靜態代理)開發。本文記錄Axis 1.x在Tomcat 5+Eclipse環境下的完整部署調試流程。
將Axis相關jar放入WEB-INF/lib,可選包activation.jar、mail.jar、xmlsec.jar同目錄。
package server;
public class SayHello {
public String getName(String name) {
return "hello " + name;
}
}
<deployment xmlns="https://xml.apache.org/axis/wsdd/" xmlns:java="https://xml.apache.org/axis/wsdd/providers/java">
<service name="SayHello" provider="java:RPC" style="wrapped" use="literal">
<parameter name="className" value="server.SayHello"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>
set Axis_Lib=D:\workspace\test\WEB-INF\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Axis_Servlet=https://localhost:8080/test/servlet/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l %Axis_Servlet% deploy.wsdd
執行後訪問https://localhost:8080/test/services查看服務列表。
瀏覽器訪問https://localhost:8080/test/services/SayHello?wsdl下載SayHello.wsdl。
set Axis_Lib=D:\workspace\test\WEB-INF\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:\workspace\test\src
set Package=server
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o %Output_Path% -p %Package% SayHello.wsdl
生成四個文件:
SayHello.java (SEI接口)SayHelloService.java (Service工廠)SayHelloServiceLocator.java (定位器)SayHelloSoapBindingStub.java (Stub實現)public class TestWSClient {
public static void main(String[] args) throws Exception {
SayHelloService service = new SayHelloServiceLocator();
SayHello_PortType client = service.getSayHello();
String result = client.getName("clientname");
System.out.println(result); // 輸出: hello clientname
}
}
public class TestWSClient extends TestCase {
public void testSayHello() throws Exception {
SayHelloService service = new SayHelloServiceLocator();
SayHello_PortType client = service.getSayHello();
assertEquals("hello clientname", client.getName("clientname"));
}
}
typeMapping