zoukankan      html  css  js  c++  java
  • 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);
    
    	}
    }
    

      

  • 相关阅读:
    安装与配置 Elasticsearch
    推荐几个 WebSocket 服务端实现
    GitLab 修改主机名,更换 IP 配置,配置 SMTP
    Choose GitLab for your next open source project
    大数据全栈式开发语言 – Python
    IPC's epoch 6 is less than the last promised epoch 7
    将/home空间从新挂载到/var/lib/docker
    Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to IP1:8020 Invalid volume failure config value: 1
    查看端口被那个进程占用
    查看java进程启动的详细参数和过程
  • 原文地址:https://www.cnblogs.com/e206842/p/9047294.html
Copyright © 2011-2022 走看看