CXF动态调用wsdl接口
1.application.properties文件中配置接口url
2.工具类
package com.vulnverify.core.utils; import java.io.IOException;
import java.util.Arrays;
import java.util.Properties; import javax.xml.namespace.QName; import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.apache.log4j.Logger;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.util.StringUtils; import tns.Application;
import tns.Application_Service; /**
*
* 使用cxf 调用webservice 接口
*
* @author linan
*
*/
public class CxfInvokeUtil { static Logger logger = Logger.getLogger(CxfInvokeUtil.class);
private static String wsdlUrl=""; static{
String filePath = null;
try {
filePath = ApplicationUtils
.getWebFileAbsoluteClassPath("application.properties");
} catch (IOException e) {
e.printStackTrace();
}
Properties pro = FileUtil.loadProperties(filePath);
wsdlUrl = pro.getProperty("cxf.url");
logger.info("初始化cxf调用webservice地址为:"+wsdlUrl);
}
/**
*
* 调用webservice 接口
*
* @param method
* 调用方法名
*
* @param params
* 接口传入参数
*
* @return
*
*/
public static synchronized Object[] invoke(String method,Object params) {
Object[] objects = null;
String paramsStr = null;
try {
ObjectMapper om = new ObjectMapper();
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory
.newInstance();
org.apache.cxf.endpoint.Client client = dcf.createClient(wsdlUrl);
//如果返回的address不是远程服务地址,重新制定地址
client.getEndpoint().getEndpointInfo().setAddress(wsdlUrl);
if (StringUtils.isEmpty(method)) { logger.error("cxf 调用webservice 执行方法名缺失:method 未传入");
return objects;
} paramsStr = om.writeValueAsString(params);
logger.info("cxf 调用webservice method:"+method+",参数:" + paramsStr); HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); // 策略
httpClientPolicy.setConnectionTimeout( 36000 ); //连接超时
httpClientPolicy.setAllowChunking( false );
httpClientPolicy.setReceiveTimeout( 10000 ); //接收超时
HTTPConduit http = (HTTPConduit) client.getConduit();
http.setClient(httpClientPolicy); objects = client.invoke(method, paramsStr); } catch (Exception e) {
e.printStackTrace();
logger.error("cxf 调用webservice 执行错误:", e); } return objects;
} public static void main(String[] args) throws Exception {
Object[] invoke = CxfInvokeUtil.invoke("get_images", ""); System.out.println(invoke); }
}
CXF动态调用wsdl接口的更多相关文章
- cxf动态调用wsdl的一个冲突以及解决
cxf发布服务,调用服务的博客很多,这里也就简单贴一下代代码. 环境如下:spring+cxf (maven环境) <cxf.version>2.7.11</cxf.version& ...
- 动态调用WebService接口的几种方式
一.什么是WebService? 这里就不再赘述了,想要了解的====>传送门 二.为什么要动态调用WebService接口? 一般在C#开发中调用webService服务中的接口都是通过引用过 ...
- C#动态调用WCF接口,两种方式任你选。
写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项目时用到了WCF. 从这 ...
- 动态调用wcf接口服务
1.url:http://localhost:8002/名称.svc/basic(.svc结尾) 2.需要引用的命名空间System.ServiceModel 3.调用代码: public class ...
- C#动态调用WCF接口
C#动态调用WCF接口 写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项 ...
- C# 不添加WEB引用调用WSDL接口
在项目中添加WEB引用耦合度较高,更新时要更新引用,所以我建议不添加WEB引用调用WSDL接口,废话不多说,直接上代码 例如WSDL地址为:http://XXX.XX.XXX.XXX:9115/WsP ...
- php7-soap调用wsdl接口报错:Could not connect to host
由php5.6升级到php7.1以上版本,在用soap调用wsdl接口是报错:Could not connect to host 后来经过排查是centos服务器上装有2个版本的openssl造成的. ...
- java-webService(调用wsdl接口)
使用Axis或XFire实现WebService: Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是Web ...
- cxf动态调用webservice设置超时,测试线程安全
Java代码 import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import java.util.con ...
随机推荐
- 一致性哈希算法(consistent hashing)(转载)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...
- 简单例子让你很好的理解:协议与委托 (Protocol and Delegate)
1 协议: 协议,类似于Java或C#语言中的接口,它限制了实现类必须拥有哪些方法. 它是对对象行为的定义,也是对功能的规范. 示例: 1 2 3 4 5 6 7 8 9 // GoodChild.h ...
- href 和src 的区别
转载地址:http://www.58maisui.com/2016/08/03/30/?utm_source=tuicool&utm_medium=referral href和src的区别: ...
- 【bzoj3667】Rabin-Miller算法
3667: Rabin-Miller算法 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 1200 Solved: 363[Submit][Statu ...
- 494. Target Sum 添加标点符号求和
[抄题]: You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have ...
- SQL 数据库 学习 006 如何设置一个用户名和密码
我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 先启动 SQL Server 2014 Management Studi ...
- Openssl CA.pl命令
一.简介 CA.pl是证书操作的友好接口,简化了一些相似的证书创建或管理操作 二.语法 CA.pl [-?] [-h] [-help] [-newcert] [-newreq][-newreq-nod ...
- pcl point merge
http://pointclouds.org/documentation/tutorials/pairwise_incremental_registration.php#pairwise-increm ...
- Red Hat 6.5 Samba服务器的搭建(登录访问)
搭建Samba服务器是为了实现Linux共享目录之后,在Windows可以直接访问该共享目录. 现在介绍如何在红帽6.5系统中搭建Samba服务. 搭建Samba服务之前,yum源必须配置好,本地源和 ...
- HBase表的memstore与集群memstore
一直有一个问题,今天调查了一下源码算是明白了. ===问题=== 通过java api(如下代码所示)在创建表的时候,可以通过setMemStoreFlushSize函数来指定memstore的大小, ...