微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webservice程序

什么是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. }  


下面是效果截图

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐