第一个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程序如下

import java.util.Random;


public class HelloWorldService {
	public String sayHello(String name) {
		return name + " say: hello [axis2]";
	}
	
	public int getAge(int i) {
		return i + new Random().nextInt(100);
	}
}

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

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

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

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

程序如下所示

package bao1;
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;


public class HelloWorldClient {

	public 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" }, new Class[] { String.class });
		System.out.println(result[0]);
		
		qname = new QName("http://ws.apache.org/axis2", "getAge");
		result = client.invokeBlocking(qname, new Object[] { new Integer(22) }, new Class[] { int.class });
		System.out.println(result[0]);
	}
}


下面是效果截图



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值