依赖如下
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.6.1</version>
</dependency>
<!-- 此包为jdk目录lib下的tools.jar -->
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.8</version>
</dependency>
调用方法如下:
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.namespace.QName;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
@Service
@WebService(name = "TestService")
public class TestService {
public static final String WSDL = "wsdl地址";
public static final String NAME_SPACE = "namespace";
@WebMethod
@WebResult
public Object methodName(@WebParam(name = "userCode") String userCode) {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient(WSDL);
Object[] objects = new Object[0];
String methodName = "与此方法名相同从wsdl地址中的xml中获取";
try {
QName opName = new QName(NAME_SPACE, methodName);
objects = client.invoke(opName, userCode);
System.out.println("返回数据:" + JSONObject.toJSONString(objects[0]));
return objects[0];
} catch (java.lang.Exception e) {
e.printStackTrace();
}
return null;
}
}