1、Dynamic Invocation Interface (DII)
2、Dynamic Proxy方式
3、Stubs方式
建議使用Stubs方式.
一、編寫wsdd發佈web服務,編寫stub client訪問web服務
1、編寫服務端程序server,SayHello.java,編譯server.SayHello.java
package server;
public class SayHello
{
public String getName(String name)
{
return "hello "+name;
}
}
編譯後將class文件拷入axis/WEB-INF/classes/server目錄下
2、編寫wsdd文件
deploy.wsdd文件內容如下:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="SayHello" provider="java:RPC">
<parameter name="className" value="server.SayHello"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>
3、發佈服務:
編輯一個deploy.bat,內容如下:
set AXIS_HOME=C:/Java/axis-bin-1_4/axis-1_4set AXIS_LIB=%AXIS_HOME%/lib
set WEBLOGIC_HOME=C:/bea/weblogic81
set WEBLOGIC_LIB=%WEBLOGIC_HOME%/server/lib
set AXISCLASSPATH=%AXIS_LIB%/axis.jar;%AXIS_LIB%/commons-discovery-0.2.jar;%AXIS_LIB%/commons-logging-1.0.4.jar;%AXIS_LIB%/jaxrpc.jar;%AXIS_LIB%/saaj.jar;%AXIS_LIB%/log4j-1.2.8.jar;%AXIS_LIB%/wsdl4j-1.5.1.jar;%AXIS_LIB%/xerces.jar;%WEBLOGIC_LIB%/weblogic.jar
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:7003/axis/services/AdminService deploy.wsdd
執行這個批處理文件,這時候,如果提示成功的話,訪問http://127.0.0.1:7003/axis/servlet/AxisServlet 就會顯示服務列表。
4、生成客戶端client stub文件
在瀏覽器上訪問服務器端的服務,可以下載到WSDL文件,通過Axis的相關工具,可以自動從WSDL文件中生成Web Service的客戶端代碼。
編寫一個WSDL2Java.bat文件,其內容如下:
set AXIS_HOME=C:/Java/axis-bin-1_4/axis-1_4
set AXIS_LIB=%AXIS_HOME%/lib
set WEBLOGIC_HOME=C:/bea/weblogic81
set WEBLOGIC_LIB=%WEBLOGIC_HOME%/server/lib
set AXISCLASSPATH=%AXIS_LIB%/axis.jar;%AXIS_LIB%/commons-discovery-0.2.jar;%AXIS_LIB%/commons-logging-1.0.4.jar;%AXIS_LIB%/jaxrpc.jar;%AXIS_LIB%/saaj.jar;%AXIS_LIB%/log4j-1.2.8.jar;%AXIS_LIB%/wsdl4j-1.5.1.jar;%AXIS_LIB%/xerces.jar;%WEBLOGIC_LIB%/weblogic.jar
set Output_Path=C:/yProject/workspace/Axis_test/src
set Output_Package=server
java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Output_Package% SayHello.wsdl
執行這個批處理文件就可以生成client stub.
生成的stub client文件列表爲:SayHello.java,SayHelloService.java,SayHelloServiceLocator.java,SayHelloSoapBindingStub.java .
5、編寫客戶端程序,編譯並執行
下面是一段junit測試客戶端代碼。
import java.net.URL;
public class Client {
public static void main(String [] args) throws Exception {
SayHelloService service = new SayHelloServiceLocator();
SayHello_PortType client = service.getSayHello() ;
String retValue = client.getName("clientname");
System.out.println(retValue);
}
}
至此,整個服務器端和客戶端的Web Service框架代碼就完成了,剩下的就是在裏面加入你的業務代碼了.