java 调用webservice的各种方法总结

作者:管理员 更新时间:2013-12-03 12:57

现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!今天和大家一起来研究研究webservice的各种使用方法。

一、利用jdk web服务api实现,这里使用基于服务

1.首先建立一个>Web services EndPoint:

2.使用apt编译Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,会生成 jaws目录

3.使用java Hello.Hello运行,然后将浏览器指向http://localhost:8080/hello?wsdl就会出现下列显示

4.使用wsimport 生成客户端  使用如下:wsimport -p . -keep //localhost:8080/hello?wsdl这时,会在当前目录中生成如下文件:

5.客户端程序:

以上方法还稍显繁琐,还有更加简单的方法

二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的    

利用xfire开发WebService,可以有三种方法:  

1一种是从javabean 中生成;  

2 一种是从wsdl文件中生成;    

3 还有一种是自己建立webservice  

步骤如下:  

用myeclipse建立webservice工程,目录结构如下:

首先建立webservice接口,

代码如下:

接着实现这个接口:

修改service.xml 文件,加入以下代码:

把整个项目部署到tomcat服务器中 ,打开浏览器,输入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl,可以看到如下:  

然后再展开HelloWorldService后面的wsdl可以看到:

客户端实现如下:

 这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net 做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下:

三、使用axis1.4调用webservice方法

前提条件:下载axis1.4包和tomcat服务器,并将axis文件夹复制到tomcat服务器的webapp文件夹中  

这里我就说一下最简单的方法:  

首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入http://localhost:8989/axis/HelloWorld.jws?wsdl,就会得到一个wsdl文件,其客户端调用方法如下:

四、使用axis2开发webservice

使用axis2 需要先下载 axis2-1.4.1-bin.zip 、axis2-1.4.1-war.zip

http://ws.apache.org/axis2/  

同理,也需要将axis2复制到webapp目录中

在axis2中部署webservice有两种方法,

第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名

第二种方式是利用xml发布webservice,这种方法比较灵活,不需要限制类的声明  

下面分别说明使用方法:  

1.pojo方式:在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。其中POJO中所有的public方法将被发布成WebService方法。先实现一个pojo类:

由于这两个方法都是public类型,所以都会发布成webservice。编译HelloWorld类后,将HelloWorld.class文件放到%tomcat%\webapps\axis2\WEB-INF\poj目录中(如果没有目录,则建立该目录),然后打开浏览器进行测试:

输入一下url:http://localhost:8080/axis2/services/listServices      

会列出所有webservice这是其中的两个webservice列表,接着,在客户端进行测试:

首先可以写一个封装类,减少编码,代码如下:

客户端调用方法:

2.使用service.xml发布webservice,这种方式和直接放在pojo目录中的POJO类不同。要想将MyService类发布成Web Service,需要一个services.xml文件,这个文件需要放在META-INF目录中,该文件的内容如下:  

其中<service>元素用于发布Web Service,一个<service>元素只能发布一个WebService类,name属性表示WebService名,如下面的URL可以获得这个WebService的WSDL内容:

http://localhost:8080/axis2/services/myService?wsdl

除此之外,还有直接可以在其中制定webservice操作方法:可以这样些service.xml文件

如果要发布多个webservice,可以在文件两段加上<serviceGroup><service></service>...<service></service></>发布

来源:亦有软件
软件产品Eysln Software Product
亦有公告Eysln Notice
案例中心Eysln Template
知识库Eysln Knowledge Base
工具箱Eysln Toolkit Online