cxf 怎么实现 webservice 数据的交互

 我来答
匿名用户
2016-05-28
展开全部
package test.cxf;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Set;

import javax.xml.namespace.QName;

import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.cxf.service.model.ServiceInfo;

public class TestDynamicClient {
public static void main(String[] args) throws Exception {
// 动态客户端
JaxWsDynamicClientFactory dynamicClient = JaxWsDynamicClientFactory
.newInstance();
// wsdl
String wsdl = "http://localhost/services/webxml?wsdl";
// 创建客户端
Client client = dynamicClient.createClient(wsdl);
// //-------------打印生成的代理类---与类的属性方法------
// ServiceInfo serviceInfo=client.getEndpoint().getService().getServiceInfos().get(0);
// Set<QName> qSet=serviceInfo.getMessages().keySet();
// Iterator<QName> qIter=qSet.iterator();
// while(qIter.hasNext()){
// QName q=qIter.next();
// //包名
// String packageName=JAXBUtils.namespaceURIToPackage(serviceInfo.getName().getNamespaceURI());
// //类名
// String className=JAXBUtils.nameToIdentifier(q.getLocalPart(),JAXBUtils.IdentifierType.INTERFACE);
// //获取生成代理类的全部完整路径
// System.out.println("类="+packageName+"."+className);
// //加载类
// Object objArgs = Thread.currentThread().getContextClassLoader().loadClass(packageName+"."+className).newInstance();
// //获取类的全部属性
// Field[] fields=objArgs.getClass().getDeclaredFields();
// for(Field f:fields){
// System.out.println("\t属性="+f.getName());
// }
// System.out.println("\t--------------------");
// Method[] methods=objArgs.getClass().getDeclaredMethods();
// for(Method m:methods){
// System.out.println("\t方法="+m.getName());
// }
//
// }
// ----------访问getInfo接口------------
try {
// 调用接口getInfo
Object[] objArr1 = client.invoke("getInfo","{\"system\": \"test001\", \"pageSize\": \"1\", \"pageNum\": \"1\", \"serviceName\": \"news_list\"}");
// 输出接口值
System.out.println(objArr1[0]);

// /* 例子2
// * 参数为对象
// * eg. getInfo(String info,XX xx)
// *
// */
// //创建xx对象
// Object objArgs = Thread.currentThread().getContextClassLoader()
// .loadClass("cn.com.softvan.cxf.XX").newInstance();
// //为xx对象xx1属性赋值
// Method xx1 = objArgs.getClass().getMethod("setXX1",String.class);
// xx1.invoke(objArgs,"1");
// //为xx对象xx2属性赋值
// Method xx2 = objArgs.getClass().getMethod("setXX2",String.class);
// xx2.invoke(objArgs,"2");
// //传入值获取返回值
// Object[] objArr2=client.invoke("getInfo",new Object[]{"第一个参数信息",objArgs});
// //返回第一个信息
// System.out.println(objArr2[0]);

} catch (Exception e) {
e.printStackTrace();
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式