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

webservice程序

发布时间:2020-12-16 23:06:22 所属栏目:安全 来源:网络整理
导读:什么是webservice呢,有的人可能会对这个有所误解。他解决了跨平台和跨服务器的问题,使用webservice可以像第三方获取所需的资源。如“百度地图”,“gps导航”等都会使用到webservice。地图厂商一般都会提供相应的接口给其他用户使用。webservice主要包含3

什么是webservice呢,有的人可能会对这个有所误解。他解决了跨平台和跨服务器的问题,使用webservice可以像第三方获取所需的资源。如“百度地图”,“gps导航”等都会使用到webservice。地图厂商一般都会提供相应的接口给其他用户使用。webservice主要包含3个方面

(1)web服务提供者(WSDL)

(2)web服务请求者(SOAP)

(3)web服务管理者(UDDI)

理解起来应该没有太多的问题,对于java程序员来说,axis2是一个不错的选择,如果使用的是spring那么选择cxf比较合适

开发准备

首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。

下载地址:http://axis.apache.org/axis2/java/core/download.cgi


我这里就选择war包,把它部署到tomcat里面就可以了。之后在浏览器里输入http://localhost:8080/axis2/可以看到


下面我就来写一个简单的服务器端webservice,这里建议java程序不要写在包里面,java程序如下

[java]? view plain copy
  1. import?java.util.Random;??
  2. ??
  3. ??
  4. public?class?HelloWorldService?{??
  5. ????public?String?sayHello(String?name)?{??
  6. ????????return?name?+?"?say:?hello?[axis2]";??
  7. ????}??
  8. ??????
  9. int?getAge(int?i)?{??
  10. return?i?+?new?Random().nextInt(100);??
  11. }??

我们可以吧这个java类的.class文件复制到

tomcat目录下的webapps的axis2的WEB-INF目录的pojo文件夹下。如果没有pojo这个目录就手动创建一个一个文件夹。然后在浏览器输入:http://localhost:8080/axis2/,

点击service之后可以看到如下页面

继续点击链接就可以看到一个xml了。接下来就可以写一个客户端程序来使用服务器端的webservice了,这里要把需要的jar包导入进去,也可以用源码或者war包里面的

程序如下所示

copy

    package?bao1;??
  1. import?javax.xml.namespace.QName;??
  2. import?org.apache.axis2.AxisFault;??
  3. import?org.apache.axis2.addressing.EndpointReference;??
  4. import?org.apache.axis2.client.Options;??
  5. import?org.apache.axis2.rpc.client.RPCServiceClient;??
  6. class?HelloWorldClient?{??
  7. static?void?main(String[]?args)?throws?AxisFault?{??
  8. ????????//RPCServiceClient是RPC方式调用??
  9. ????????RPCServiceClient?client?=?new?RPCServiceClient();??
  10. ????????Options?options?=?client.getOptions();??
  11. ????????//设置调用WebService的URL??
  12. ????????String?address?=?"http://localhost:8080/axis2/services/HelloWorldService";??
  13. ????????EndpointReference?epf?=?new?EndpointReference(address);??
  14. ????????options.setTo(epf);??
  15. ??????????
  16. /**?
  17. ?????????*?设置将调用的方法,http://ws.apache.org/axis2是方法?
  18. ?????????*?默认(没有package)命名空间,如果有包名?
  19. ?????????*?就是http://service.hoo.com?包名倒过来即可?
  20. ?????????*?sayHello就是方法名称了?
  21. ?????????*/??
  22. ????????QName?qname?=?new?QName("http://ws.apache.org/axis2",?"sayHello");??
  23. //指定调用的方法和传递参数数据,及设置返回值的类型??
  24. ????????Object[]?result?=?client.invokeBlocking(qname,?new?Object[]?{?"jack"?},?new?Class[]?{?String.class?});??
  25. ????????System.out.println(result[0]);??
  26. ??????????
  27. ????????qname?=?"getAge");??
  28. ????????result?=?client.invokeBlocking(qname,153); background-color:inherit; font-weight:bold">new?Object[]?{?new?Integer(22)?},153); background-color:inherit; font-weight:bold">new?Class[]?{?int. ????}??
  29. }??


下面是效果截图

(编辑:李大同)

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

    推荐文章
      热点阅读