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框架代码就完成了,剩下的就是在里面加入你的业务代码了.