论坛首页 Java企业应用论坛

axis调用CFX框架服务端

浏览 3311 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-12-26  
/**
	 * 连接 webservice 服务器,调用指定方法。
	 * 
	 * @param namespace
	 * @param endpoint
	 * @param function
	 *            接口方法名称
	 * @return boolean 是否连接成功
	 */
	private boolean connect(String namespace, String endpoint, String function,
			List<String> paramNames) {
		try {
			// 连接WS服务器
			call = (Call) service.createCall();
			// 设置调用方法
			call.setOperationName(new QName(namespace, function));
/**************************调用CFX框架时,这些代码是必须的****************************************/

			for (String param : paramNames) {
				call.addParameter(param,
						org.apache.axis.encoding.XMLType.XSD_STRING,
						javax.xml.rpc.ParameterMode.IN);// 操作的参数
				call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型
			}
			call.setUseSOAPAction(true);
/**************************调用CFX框架时,这些代码是必须的****************************************/
			// call.setOperationName(function);
			// 设置服务器地址
			call.setTargetEndpointAddress(endpoint);
		} catch (ServiceException ex) {
			LOG.error("连接服务器(" + endpoint + ")失败", ex);
			return false;
		}
		return true;
	}


....

//连接服务端
this.connect(Config.server_namespace, Config.server_endpoint,
				Commons.SERVICE_FUNC_NAME_GET, Arrays
						.asList(new String[] { "arg0" }));//若对端服务端代码没有声明参数的名称,则默认名称是arg0,arg1...


注意上面的"调用CFX框架时,这些代码是必须的"代码块,因为同是Axis框架的客户端和服务端在通信时,很多默认的设置是相同的,所以无需对Call对象做多余的设置,而在调用.NET或CFX等框架时,就需要根据服务端框架的设置做相应的设置。

其实,既然SOAP协议是与技术框架无关的,那么可以直接通过wsdl就可以知道接口方法的参数返回值等等信息,然后定制相应的客户端。但是我的水平还有限,对SOAP的理解还不够深刻,希望有这方面经验的朋友指点一二。

如果上面的阐述不够清楚可以参考另一篇博文:http://t22011787.iteye.com/blog/1144662
   发表时间:2012-12-31  
这两天也在用axis 代码call CXF 发布的service, 你例子,方法参数和返回值都是string(简单类型),我遇到的问题是我方法的参数是一个java类.e.g
class Person{
   private Address[] addresses;
   private String name;
}

当我call方法 savePersion(Persion person), 发现我传给server端的persion对象不为空,但person的fields全为空,addresses == null, name == null too! Can you tell me why?  有遇到此种问题的达人请帮忙,如果没人帮,我就只能不用CXF框架发布service,而是用spring 把后台发布出一个rmi接口来了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics