我是靠谱客的博主 轻松大树,最近开发中收集的这篇文章主要介绍RPC远程调用webServices公共方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

package com.homer.core.common.util;

import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.XMLType;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/**
 * 客户端调用核心wsdl工具
 */
public class WebServiceClientUtil {
        private static Logger logger = LoggerFactory.getLogger(WebServiceClientUtil.class);

        /**
         * RPC远程调用webServices公共方法
         * @param reqXml        请求报文xml
         * @param logFunName    接口中文名称(日志用)
         * @param serviceUrl    请求路径
         * @param nameSpace     命名空间
         * @param part  方法名
         * @return
         */
         public static String getWSDLCall(String reqXml,String logFunName,String serviceUrl,String nameSpace,String part){
                 String resXml = "";
                 long methodStartTime = System.currentTimeMillis();
                 try {
                         logger.info("[{}]请求报文reqXml=[{}]",logFunName,reqXml);
                         Service service = new Service();
                         Call call = (Call) service.createCall();
                         call.setTargetEndpointAddress(new URL(serviceUrl));//设置请求路径
                         call.setOperationName(new QName(nameSpace,part));//设置命名空间和需要调用的方法名
                         call.addParameter("arg0", XMLType.SOAP_STRING, ParameterMode.IN);//接口的参数
                         call.setReturnType(org.apache.axis.Constants.XSD_STRING);//设置返回类型 
                         call.setOperationUse(org.apache.axis.constants.Use.LITERAL);
                         call.setTimeout(Integer.valueOf(60000));//设置请求超时时间    30000毫秒  
                         resXml = (String)call.invoke(new Object[]{reqXml});
                         logger.info("[{}]返回报文resXml=[{}]",logFunName,resXml);
                         long methodEndTime = System.currentTimeMillis();
                         logger.info("[{}]总计耗时{}秒",logFunName,(methodEndTime-methodStartTime)/1000F);
                 } catch (Exception e) {
                         logger.error("[{}]调用接口异常:{}",logFunName,e.getMessage());
                 }
                 return resXml;
         }
         
        
        public static void main(String[] args) {
                //调用本地
                String queryUrl = "http://uat.xhdaili.com/rel/services/FCContService?wsdl";//请求路径
                String nameSpace = "http://policySign.webservice.jbs.sinosoft.com";//命名空间
                String localPart = "getFCContService";//需要调用的方法名
                
                try {
                        String reqXml = WebServiceClientUtil.getLocalXml("D:\a.txt");
                        System.out.println("请求报文reqXml=n"+reqXml);
                        getWSDLCall(reqXml,"",queryUrl,nameSpace,localPart);//客户端调用服务端
                } catch (Exception e) {
                        e.printStackTrace();
                }
                
        }        
        
        
        /**
         * 读取文件中的字符
         */
        public static String getLocalXml(String fileName) {
                String str = "";
                StringBuilder sb = new StringBuilder();
                try {
                        BufferedReader br = new BufferedReader(new FileReader(fileName));
                        String line;
                        while ((line = br.readLine()) != null) { // 循环读取流
                                sb.append(line.trim());
                        }
                        br.close();
                } catch (IOException e) {
                        e.printStackTrace();
                }
                str= sb.toString();
                return str;
        }
}

 

pom.xml

        <!-- wsdl调用使用 -->
	    <dependency>
	        <groupId>javax.xml.rpc</groupId>
	        <artifactId>javax.xml.rpc-api</artifactId>
	        <version>1.1.1</version>
	    </dependency>
	    <dependency>
	        <groupId>org.apache.axis</groupId>
	        <artifactId>axis</artifactId>
	        <version>1.4</version>
	    </dependency>
        <dependency>
	      	<groupId>wsdl4j</groupId>
	      	<artifactId>wsdl4j</artifactId>
	  	</dependency>
  		<dependency>
       		<groupId>commons-discovery</groupId>
       		<artifactId>commons-discovery</artifactId>
       		<version>0.2</version>
     	</dependency>

 

最后

以上就是轻松大树为你收集整理的RPC远程调用webServices公共方法的全部内容,希望文章能够帮你解决RPC远程调用webServices公共方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部