1、 用Axis提供的WSDL2java工具类生成代码,命令如下:
C:/SoftWare/tomcat-5.0.28/tomcat-5.0.28/webapps/AxisWebService/WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -s http://localhost:8080/AxisWebService/services/HelloWorldWSDD?wsdl –o c:/
-s 是设置wsdl的路径url和是当前物理硬盘上的wsdl文件(可以将页面上的wsdl的xml文件另存为一份试试,也是可以的)
-o 是设置转换的文件的输出目录
上面的命令会生产服务器端的实现代码和客户端的调用代码。代码文件如下:
deploy、undeploy是发布、卸载WebService的wsdd文件
HelloWorldWSDD是服务器端代码接口文件,继承了Remote接口,定义了getAge、sayHello方法
HelloWorldWSDDService是获得当前Service实例的接口
HelloWorldWSDDServiceLocator实现了HelloWorldWSDDService接口,客户端在调用当前WebService时候有用
HelloWorldWSDDSoapBindingImpl当前WebService接口HelloWorldWSDD的实现,需要自己实现方法的业务
HelloWorldWSDDSoapBindingStub看结尾的Stub就知道,这个可以完成客户端的实现,用它就可以调用到WebService的方法
下面用WSDL2Java生成的代码调用WebService,注意你还得用dos命令将上面的服务通过deploy.wsdd发布出去。下面是调用代码:
package localhost.AxisWebService.services.HelloWorldWSDD.clientimpl; import java.net.MalformedURLException; import java.net.URL; import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; import localhost.AxisWebService.services.HelloWorldWSDD.HelloWorldWSDDServiceLocator; import localhost.AxisWebService.services.HelloWorldWSDD.HelloWorldWSDDSoapBindingStub; public class Client { public static void main(String[] args) throws ServiceException, RemoteException, MalformedURLException { String target = "http://localhost:8080/AxisWebService/services/HelloWorldWSDD"; HelloWorldWSDDServiceLocator service = new HelloWorldWSDDServiceLocator(); HelloWorldWSDDSoapBindingStub stub = new HelloWorldWSDDSoapBindingStub(new URL(target), service); System.out.println(stub.getAge(22)); System.out.println(stub.getName("张三")); } }
用自动生成的代码完成客户端调用比较简单,如果你的WebService的实现版本是JAX-WS2.0就可以用MyEclipse的WebService插件工具帮助我们生产代码,如:axis2就可以,下次会介绍Axis2.x的用法。
作者:hoojo
出处: http://www.cnblogs.com/hoojo/archive/2010/12/20/1911393.html
blog:http://blog.csdn.net/IBM_hoojo