加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

axis2 wenservice第一个例子

发布时间:2020-12-17 00:14:27 所属栏目:安全 来源:网络整理
导读:公司要用webservice 自己去学,看了视频有点老,后来找了些文章看着自己试试,这是个不错的文章分享给大家!!!按这个走就会成功的,建services下的那个service.xml很重要啊!! 1、编写一个简单的WebService的服务器端代码,代码如下: 代码 import java.util.Rando

公司要用webservice 自己去学,看了视频有点老,后来找了些文章看着自己试试,这是个不错的文章分享给大家!!!按这个走就会成功的,建services下的那个service.xml很重要啊!!

1、编写一个简单的WebService的服务器端代码,代码如下:

代码import java.util.Random; /** * <b>function:</b> WebService HelloWorld服务示例 * @author hoojo * @createDate 2011-1-5 下午03:35:06 * @file HelloWorldService.java * @package com.hoo.service * @project Axis2WebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */ public class HelloWorldService { public String sayHello(String name) { return name + " say: hello [axis2]"; } int getAge(int i) { return i + new Random().nextInt(100); } }

注意,上面的HelloWorldService是没有package的。Copy这个类的class文件,放到tomcat目录下的webapps的axis2的WEB-INF目录的pojo文件夹下。如果没有pojo这个目录就手动创建一个一个文件夹。然后在浏览器输入:http://localhost:8080/axis2/

点击Services的链接就可以看到我们手动发布的HelloWorldService了,或者是浏览器地址栏输入:http://localhost:8080/axis2/services/listServices

你就可以看到你刚才粘贴过去的这个WebService了。

点击链接就可以看到wsdl文件的内容了。内容很多,如果你看过axis1.x的介绍就知道wsdl文件的大致结构了。

下面讲解下为什么要将class放在pojo文件夹下。首先我们看看[tomcat_home]/webapps/axis2/WEB-INF/conf/axis2.xml

该文件中有这样一行代码:

<deployer extension=".class" directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/>

.class的后缀文件放在目录pojo目录下。

2、测试这个WebService的方法

复制上面的HelloWorldService的链接地址,然后带上方法名称和参数值即可测试调用是否成功。如下:

http://localhost:8080/axis2/services/HelloWorldService/sayHello?name=jack

http://localhost:8080/axis2/services/HelloWorldService这个是WebService的地址

/sayHello是方法名称,?name=jack是参数名称和值

在浏览器中输入上面的地址后,可以看到如下效果:

可以看到返回值,和方法名称。ns:sayHelloResponse是方法名称,所有的方法名称后都会带上Response,后面的ns当然是当前方法所在的类的包名了,这里没有package就是默认的axis2的域名。

同样,getAge方法,也是一样的调用方法。

http://localhost:8080/axis2/services/HelloWorldService/getAge?i=22

结果如下:

3、下面我们看下客户端调用代码的编写,代码如下:

代码package com.hoo.service; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; /** * <b>function:</b>HelloWorldService 客户端调用代码 * @author hoojo * @createDate 2011-1-7 下午03:55:05 * @file HelloWorldClient.java * @package com.hoo.service * @project Axis2WebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */ class HelloWorldClient { static void main(String[] args) throws AxisFault { //RPCServiceClient是RPC方式调用 RPCServiceClient client = new RPCServiceClient(); Options options = client.getOptions(); //设置调用WebService的URL String address = "http://localhost:8080/axis2/services/HelloWorldService"; EndpointReference epf = new EndpointReference(address); options.setTo(epf); /** * 设置将调用的方法,http://ws.apache.org/axis2是方法 * 默认(没有package)命名空间,如果有包名 * 就是http://service.hoo.com 包名倒过来即可 * sayHello就是方法名称了 */ QName qname = new QName("http://ws.apache.org/axis2","sayHello"); //指定调用的方法和传递参数数据,及设置返回值的类型 Object[] result = client.invokeBlocking(qname,new Object[] { "jack" },255)">new Class[] { String.class }); System.out.println(result[0]); qname = getAge"); result = client.invokeBlocking(qname,255)">new Object[] { new Integer(22) },255)">new Class[] { int.class }); System.out.println(result[0]); } }

如果你了解或是看过axis1.x的WebService,这里的客户端调用代码比较简单,有部分关键注释,这里就不多加赘述。值得注意的是axis2的WebService客户端调用的返回对象是一个Object的数组,这点和axis1.x有很大不同。我们一般拿数组的第一个值,转换强转即可。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读