Axis2分布WebSerivce(服务端和客户端)二

客户端调用Axis2开发的WebService,有三种方式,一种是RPC方式,一种是采用AXIOM方式,一种是生成客户端方式。其中常用的是前两种方式。

第一种RPC方式

有返回值的情况

public static String callWithRtn(String city) {

	try {

			RPCServiceClient sender = new RPCServiceClient();

			Options options = sender.getOptions();

			// 超时时间20s
			options.setTimeOutInMilliSeconds(2 * 20000L);

			// 关联服务端地址
			EndpointReference targetEPR = new EndpointReference("http://localhost:8080/myAxis2Pro/services/city?wsdl");
			options.setTo(targetEPR);

			// 限定名QName,一般包括 NamespaceURI, local part and prefix
			// 1:NamespaceURI 2:local part
			QName qname = new QName("http://svc.jwt.com", "desc");

			// 输入参数
			Object[] param = new Object[] { city };

			// 输出类型、针对返值类型的
			Class<?>[] types = new Class[] { String.class }; 

			/**
			 * invokeBlocking方法有三个参数(有返回值是invokeBlocking,无返回值是invokeRobust)
			 * 第一个参数的类型是QName对象,表示要调用的方法名;
			 * 第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];当方法没有参数时不能是null,而要使用new Object[]{}。
			 * 第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。
			 */
			Object[] response1 = sender.invokeBlocking(qname, param, types);

			return String.valueOf(response1[0]);

	} catch (AxisFault e) {
			e.printStackTrace();
			return "error";
	}
}

无返回值的情况

public static String callWithoutRtn(String mark) {
	try {

			RPCServiceClient sender = new RPCServiceClient();

			Options options = sender.getOptions();

			// 超时时间20s
			options.setTimeOutInMilliSeconds(2 * 20000L);

			// 关联服务端地址
			EndpointReference targetEPR = new EndpointReference("http://localhost:8080/myAxis2Pro/services/city?wsdl");
			options.setTo(targetEPR);

			// 限定名QName,一般包括 NamespaceURI, local part and prefix
			// 1:NamespaceURI 2:local part
			QName qname = new QName("http://svc.jwt.com", "mark");

			// 输入参数
			Object[] param = new Object[] { mark };

			/**
			 * invokeBlocking方法有三个参数(有返回值是invokeBlocking,无返回值是invokeRobust)
			 * 第一个参数的类型是QName对象,表示要调用的方法名;
			 * 第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];当方法没有参数时不能是null,而要使用new Object[]{}。
			 */
			sender.invokeRobust(qname, param);

			return "OK";

	} catch (AxisFault e) {
		    e.printStackTrace();
		    return "Fail";
	}
}

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值