the5fire

关注Python、Django、Vim、Linux、Web开发、团队管理和互联网--Life is short, we need Python.


WebService深入学习之四:使用生成存根的方式访问WebService

作者:the5fire | 标签:     | 发布:2011-01-25 11:25 p.m. | 阅读量: 10703, 10307
这篇文章和那个读取天气预报的类似.

首先你需要根据WebService的描述,即WSDL语言生成本地的访问文件(java文件)。你需要用的axis中的org.apache.axis.wsdl.WSDL2Java,关于这个的使用网上有很多教程,这里我就最简单的描述一下使用方式,编写一个bat文件:


set AXIS_HOME=C:\Program Files\Java\axis-1_4
set CLASSPATH=.;%AXIS_HOME%\lib\axis.jar;%AXIS_HOME%\lib\axis-ant.jar;%AXIS_HOME%\lib\commons-discovery-0.2.jar;%AXIS_HOME%\lib\commons-logging-1.0.4.jar;%AXIS_HOME%\lib\jaxrpc.jar;%AXIS_HOME%\lib\log4j-1.2.8.jar;%AXIS_HOME%\lib\saaj.jar;%AXIS_HOME%\lib\wsdl4j-1.5.1.jar

java org.apache.axis.wsdl.WSDL2Java -p com.test http://localhost:8088/axis/HelloWorld.jws?wsdl



关于参数-p:打包的意思,后面就是包名。其实后面的那个url地址换成磁盘上的wsdl文件也是可以的。


然后会在你的bat文件所在文件夹下生成一个com文件夹,里面按照src方式存有源码,你需要把com文件拷到新建工程的src下。
wsdl
然后在写一个MyClient类来通过存根读取webservice上面的内容:

package client;

import java.rmi.RemoteException;
import com.test.HelloWorldService;
import com.test.HelloWorldServiceLocator;
import com.test.HelloWorld_PortType;
import javax.xml.rpc.ServiceException;

public class MyClient {

public static void main(String[] args) {

HelloWorldService hs = new HelloWorldServiceLocator();
HelloWorld_PortType hcpt;
try {
hcpt = hs.getHelloWorld();
System.out.println(hcpt.sayHello("胡阳"));
} catch (ServiceException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

运行程序,出现结果。
- from the5fire.com
----EOF-----

微信公众号:Python程序员杂谈


其他分类: