1. 程式人生 > >java 呼叫webservice(xml格式交換)工具類

java 呼叫webservice(xml格式交換)工具類

今天在公司開發一個webservice相關的專案使用RPC呼叫時候,由於報文返回過大,出現了記憶體溢位的情況。這裡可以使用axis訪問webservice,這裡是我封裝的工具類。

package com.handkoo.utils;
 
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

/**
 * 呼叫webservice(xml)工具類
 * 
 * @author cp
 *
 */
public class MyWebServiceUtils {

	/**
	 * 封裝的訪問webservice的工具類:(有侷限性,資料量小的xml報文可用,較大則會出現stackoverflow的異常)
	 * 
	 * @param reqXML
	 *            請求的xml
	 * @param endPoint
	 *            webservice的路徑除去?wsdl:例如:http://1.202.235.66:7002/webService/PartsService(沒有?wsdl)
	 * @param namespace
	 *            名稱空間
	 * @param method
	 *            方法名稱
	 * @return	返回報文結果(xml)
	 */
	public static String loadWebService(String reqXML, String endPoint, String namespace, String method) {
		String responseXml = "";
		RPCServiceClient serviceClient = null;
		try {
			/* 呼叫理賠系統的介面 */
			String nameSpace = namespace;
			QName qname = new QName(nameSpace, method);
			serviceClient = new RPCServiceClient();
			Options options = serviceClient.getOptions();
			EndpointReference targetEPR = new EndpointReference(endPoint);
			options.setTo(targetEPR);
			options.setTimeOutInMilliSeconds(30000);
			Object[] rtnObjs = serviceClient.invokeBlocking(qname, new Object[] { reqXML },
					new Class[] { String.class });
			responseXml = rtnObjs[0].toString();
		} catch (Exception e) {
			e.toString();
		}
		return responseXml;
	}

	/**
	 * axis方式訪問webservice
	 * 
	 * @param reqXML
	 *            請求的xml的報文
	 * @param endPoint
	 *            webservice的wsdl地址,例如:http://1.202.235.66:7002/webService/PartsService?wsdl
	 * @param namespace
	 *            呼叫方法的名稱空間
	 * @param method
	 *            呼叫的方法名
	 * @return 返回呼叫的報文(xml)
	 * 
	 */
	public static String invokRemoveWSDLByAxis(String reqXML, String endPoint, String namespace, String method) {
		String responseXML = "";
		Service service = new Service();
		try {
			Call call = (Call) service.createCall();
			call.setTargetEndpointAddress(endPoint);
			call.setOperationName(method);
			call.setOperationName(new javax.xml.namespace.QName(namespace, method));
			call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN);
                        call.setReturnType(XMLType.XSD_STRING);
                       responseXML = (String) call.invoke(new Object[] { reqXML });
		} catch (Exception e) {
			e.printStackTrace();
		}
		return responseXML;
	} 
 
}

神奇的事情是,我使用第二種方式呼叫,記憶體溢位的情況就有效避免了!

相關推薦

java 呼叫webservice(xml格式交換)工具

今天在公司開發一個webservice相關的專案使用RPC呼叫時候,由於報文返回過大,出現了記憶體溢位的情況。這裡可以使用axis訪問webservice,這裡是我封裝的工具類。 package com.handkoo.utils; import javax.xml.

Java時間格式轉換工具

string stact 修改 stack time mil 日期格式轉換 pla gettime 把當前時間修改成指定時間 //把當前時間修改成指定時間 public String dateUtil(Integer seconds, String dateFo

java呼叫WebService介面的一種方法,引數為XML的字串

String xmlinfo = "<data>.......</data>";//xml引數 try { String url = "http://******/Server

Java生成隨機數工具,進位制之間的轉換工具,獲取指定時間,時間格式轉換工具

廢話不多說,貢獻一下code 1.編號生成工具 import org.apache.commons.lang3.StringUtils; import java.math.BigInteger; import java.text.SimpleDa

Java中的日期轉化格式DateUtil工具

最近在專案中經常會遇到各種的日期格式轉化。所以,參考一些資料就寫了一個工具類DateUtil。日期格式包括:年(yyyy)、年月(yyyyMM、yyyy-MM)、年月日(yyyyMMdd、yyyy-MM-dd)、年月日時分(yyyyMMddHHmm、yyyy-MM-dd HH

java把13位時間戳轉換成"yyyy-MM-dd HH:mm:ss"格式工具

package com.liming.test; import java.sql.SQLException; import java.text.SimpleDateFormat; import ja

07_資料庫建立,新增c3p0操作所需的jar包,編寫c3p0-config.xml檔案,編寫User.java,編寫jdbcUtils.java實現操作資料庫的模板工具,UserDao編寫,Dao

 1建立day14資料庫,建立user.sql表: A 建立資料庫 day14 B 建立資料表 users createtable users ( id

java xml數字簽名工具

package test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOExc

最全面的Java字節byte操作,處理Java基本數據的轉換及進制轉換操作工具,流媒體及java底層開發項目常用工具

進制 string 常用工具類 cat i++ logs 指定位置 tput off 前言:用於處理Java基本數據的轉換及進制轉換操作工具 一、實現功能 1、int預byte互轉 2、int與byte[]互轉 3、short與byte互轉 4、short與byte[]互轉

轉換日期格式工具

ring mage code edate print util println pan date() 寫一個工具類,用來轉換固定的日期格式: import java.text.SimpleDateFormat; import java.util.Date; public

【轉】Java壓縮和解壓文件工具ZipUtil

span time 其他 unzip empty del pat 列表 bis 特別提示:本人博客部分有參考網絡其他博客,但均是本人親手編寫過並驗證通過。如發現博客有錯誤,請及時提出以免誤導其他人,謝謝!歡迎轉載,但記得標明文章出處:http://www.cnblogs.

java禁止實例化的工具

pre 創建 blog rgs ram 工具 spa div class public class Q { /** * @param args */ public static void main(String[] arg

Java學習筆記48(DBUtils工具一)

lex time name span 載器 .sql 定義 ride oot 上一篇的例子可以明顯看出,在增刪改查的時候,很多的代碼都是重復的, 那麽,是否可以將增刪改查封裝成一個類,方便使用者 package demo; /* * 實現JDBC的工具類 *

Java中的AES加解密工具:AESUtils

.com asc += for frame day 換行 fault mod 本人手寫已測試,大家可以參考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysC

java讀取properties配置文件工具

bstr final puts exceptio 發生 ret void err util import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStr

java呼叫webservice與介面方法

摘要: 本文講的是java呼叫webservice與介面方法, webservice的呼叫,常用的大約有3種方式:     1、使用axis呼叫     2、使用xfire呼叫     3

java中讀取Property檔案屬性工具

java中讀取Property配置檔案屬性工具類: import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; /** * 讀取Property配置檔

java操作excel文件通用工具

1.自定義註解類   package cn.com.test.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lan

JAVA呼叫webService SOAP12

package com.ess.pos.info.impl; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream;    import org.ap

Java service層獲取HttpServletRequest的工具

大家都知道 能在Controller/action層獲取 HttpServletRequest , 但是這裡給大家備份的 是 從程式碼內部  service層獲取HttpServletRequest 工具類。  具體如下: package com.base.common.