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 ...
随机推荐
- 运维自动化工具 Kickstart
简介: 批量安装操作系统工具之 Kickstart ,RedHat 早前推出的产品( 不多说了,现在都玩 Cobbler 啦 ). 测试环境:CentOS 6.6 x86_64 minimal 一.安 ...
- PHP - 模拟HTTP请求, stream_context_create 和 fopen 和 fsockopen
一.fsocketopen,使用这个的过程看起来更像别的语言的socket编程 public function send($request) { /* 请求数据 */ $post_data = $re ...
- Unsupported compiler 'com.apple.compilers.llvmgcc42' selected for architecture 'armv7' Xcode5
刚刚将Xcode更新到Xcode5,一运行报如下错误: Unsupported compiler 'com.apple.compilers.llvmgcc42' selected for archit ...
- 遍历List集合时,删除数据的问题
一.问题描述 有时候,我们会遇到在遍历List集合的过程中删除数据的情况. 看着自己写的代码,感觉完全没有问题,但就是达不到预期的效果,这是为什么呢?下面我们来分析下 String str1 = ne ...
- FreeSWITCH 客户端fs_cli连接设置(acl)
FreeSWITCH 默认配置只能 在本机连接, 要从 外面连接, 就要配置: acl.conf.xml::network-lists/list event_socket.conf.xml::appl ...
- python的 pep8 规范(看完你会感谢我的!!!)
1 缩进与换行 每级缩进使用四个空格 2 限制每行的最大长度为79个字符 3 空行 顶层函数和类之间使用两个空行 类的方法之间用一个空行 在函数中使用空行表示不同逻辑段落 4 导入位于文件的顶部 5 ...
- [erlang 001] erlang中的错误及异常处理
一. erlang中的错误 1. 分类 1) 编译错误:主要是编译器检测出的代码语法错误: 2) 逻辑错误:是指程序没有完成预期的工作,属于开发人员的问题: 3) 运行时错误:是指erlang运行时抛 ...
- javascript的constructor属性
/* constructor 属性 constructor 属性返回所有 JavaScript 变量的构造函数. */console.log("John".constructor) ...
- DPDK收发包全景分析
前言:DPDK收发包是基础核心模块,从网卡收到包到驱动把包拷贝到系统内存中,再到系统对这块数据包的内存管理,由于在处理过程中实现了零拷贝,数据包从接收到发送始终只有一份,对这个报文的管理在前面的mem ...
- [C++] 2D Array's memory allocation
2D Array's memory allocation