通过JaxWsDynamicClientFactory进行WebService 客户端调用的一个好处就是只需要知道了WSDL地址就行了,不需要手动生成任何代码,这样,如果需要调用多个WebService服务的话,只需要创建多个Client即可,不用考虑传统方式(生成代码)冲突问题,这样可以让代码更优雅。
下面给出步骤
首先整合相关jar包,在POM文件中添加如下依赖
<!-- cxf Web Service -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.10</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.10</version>
</dependency>
然后java代码如下:
JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
Client client = clientFactory.createClient(webserviceAddress);
Object[] result = null;
try {
//如果有命名空间的话
QName operationName = new QName(namespaceURI,localPort); //如果有命名空间需要加上这个,第一个参数为命名空间名称,第二个参数为WebService方法名称
result = client.invoke(operationName,param1, param2);//后面为WebService请求参数数组
//如果没有命名空间的话
result = client.invoke(operationName, param1); //注意第一个参数是字符串类型,表示WebService方法名称,第二个参数为请求参数
} catch (Exception e) {
String errMsg = "WebService发生异常!";
result = new Object[] { errMsg };
logger.error(errMsg, e);
}

本文介绍了如何利用cxf的JaxWsDynamicClientFactory方便地进行WebService客户端调用,强调了这种方法的优势在于仅需WSDL地址,无需手动生成代码,避免了传统方式可能的代码冲突,提高了代码的优雅性。文中提到了整合相关jar包并添加POM依赖的步骤,以及展示了简单的Java实现代码。
1万+





