D:\developTools\apache-cxf-2.5.2\samples\wsdl_first_dynamic_clientCXF 方法 cxf方法serviceInfo.getBindings() BindingInfo--[BindingInfo http://schemas.xmlsoap.org/wsdl/soap/]serviceInfo.getDocumentation() WS_0917_05package com.test;import java.beans.PropertyDescriptor;import java.io.File;import java.lang.reflect.Method;import java.net.URL;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import javax.xml.bind.JAXBElement;import javax.xml.namespace.QName;import org.apache.cxf.endpoint.Client;import org.apache.cxf.endpoint.ClientImpl;import org.apache.cxf.endpoint.Endpoint;import org.apache.cxf.jaxb.JAXBUtils;import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;import org.apache.cxf.service.model.BindingInfo;import org.apache.cxf.service.model.BindingMessageInfo;import org.apache.cxf.service.model.BindingOperationInfo;import org.apache.cxf.service.model.EndpointInfo;import org.apache.cxf.service.model.MessagePartInfo;import org.apache.cxf.service.model.ServiceInfo;public class Test { /** * * @throws Exception */ public static void main(String[] args) throws Exception { long begin = System.currentTimeMillis(); String namespace ="" ; String service ="BIServicesSoap"; String methodName ="Drill_WS005"; // 远程webService的URL String hostUrl = "http://172.16.66.50:8080/dswsbobje/qaawsservices/biws?wsdl=1&cuid=M1X4xPAAAHaDAPsA.AAAMzwAAqwQQjIAAAA"; methodName="Drill_WS_0917_05"; hostUrl = "http://172.16.66.50:8080/dswsbobje/qaawsservices/biws?WSDL=1&cuid=M1X6lewACbH.APsA.AAAN0AAAqwQQjIAAAA"; try {// System.getProperties().put("proxyHost", "proxy.cmcc");// System.getProperties().put("proxyPort", "8080"); // 创建动态客户端 JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(); // 创建客户端连接 URL wsdlUrl = new URL(hostUrl); Client client = factory.createClient(wsdlUrl); ClientImpl clientImpl = (ClientImpl) client; Endpoint endpoint = clientImpl.getEndpoint(); // Make use of CXF service model to introspect the existing WSDL ServiceInfo serviceInfo = endpoint.getService().getServiceInfos().get(0); namespace = serviceInfo.getTargetNamespace(); serviceInfo.getName().getNamespaceURI(); serviceInfo.getProperty("Operation"); Collection ends = serviceInfo.getEndpoints(); Iterator qeIter=ends.iterator(); while(qeIter.hasNext()){ EndpointInfo einfo= qeIter.next(); System.out.println(einfo); } System.out.println("" + serviceInfo.getEndpoints()); System.out.println("document---"+serviceInfo.getInterface()); Map properies= serviceInfo.getProperties(); System.out.println(properies.size()); for (String key : properies.keySet() ) { System.out.println("key--"+key+ "-----" + properies.get(key).toString()); } Set qSet=serviceInfo.getMessages().keySet(); Iterator 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----" +className ); } String packageName=JAXBUtils.namespaceURIToPackage(serviceInfo.getName().getNamespaceURI()); Object person =Thread.currentThread().getContextClassLoader().loadClass(packageName+".LovValueIndex").newInstance(); // 创建QName来指定NameSpace和要调用的service QName bindingName = new QName(namespace, service); BindingInfo binding = serviceInfo.getBinding(bindingName); // 创建QName来指定NameSpace和要调用的方法 QName opName = new QName(namespace, methodName); BindingOperationInfo boi = binding.getOperation(opName); BindingMessageInfo inputMessageInfo = boi.getInput(); List parts = inputMessageInfo.getMessageParts(); // 取得对象实例 MessagePartInfo partInfo = parts.get(0); Class partClass = partInfo.getTypeClass(); Object inputObject = partClass.newInstance(); ReflectUtil.setFieldValue(inputObject, "login","bwadm") ; ReflectUtil.setFieldValue(inputObject, "password","bwadmbwadm") ; // 取得字段的set方法并赋值 List