1,读取.properties文件
import java.util.ResourceBundle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import com.ielpm.pay.web.cache.Cache;
/**
* 存放子系统方法路由,并定期更新配置,由TIMEOUT配置周期
* @author rpl
* @date 2016-01-19
*
*/
public class RouteWrapper {
private static final String KEY = "channel_route";
private static Table<String, String, Route> table;
private static ResourceBundle ap;
private static Cache routeCache;
private static final Long TIMEOUT = 30L; //MINUTES
static{
routeCache = new Cache<String, Table<String, String, Route>>(TIMEOUT);
}
@SuppressWarnings("unchecked")
public Route getRoute(String channelNo, String transType){
try{
table = (Table<String, String, Route>) routeCache.get(KEY);
if(table == null){
init();
}
}catch(Exception e){
init();
}
return table.get(channelNo, transType);
}
private void convertJsonArray(String jsonArray){
try{
JSON json = null;
JSONArray array = JSON.parseArray(jsonArray);
Route route = null;
String[] channelNoes;
for(int i=0,len = array.size(); i<len; i++){
json = array.getJSONObject(i);
route = JSON.parseObject(json.toJSONString(), Route.class);
channelNoes = route.getChannelNo().split(",");
for(String channelNo : channelNoes){
table.put(channelNo, route.getTransType(), route);
}
}
}catch(Exception e){
e.printStackTrace();
}
}
private synchronized void init(){
ap = ResourceBundle.getBundle("route");
table = HashBasedTable.create();
String routeJson = ap.getString(KEY);
convertJsonArray(routeJson);
routeCache.put(KEY, table);
}
}
/**
* 路由类
* @author rpl
* @date 2016-01-19
*
*/
public class Route {
private String channelNo;
private String transType;
private String refInterface;
private String method;
private String refId;
private String desc;
public String getChannelNo() {
return channelNo;
}
public void setChannelNo(String channelNo) {
this.channelNo = channelNo;
}
public String getTransType() {
return transType;
}
public void setTransType(String transType) {
this.transType = transType;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getRefId() {
return refId;
}
public void setRefId(String refId) {
this.refId = refId;
}
public String getRefInterface() {
return refInterface;
}
public void setRefInterface(String refInterface) {
this.refInterface = refInterface;
}
@Override
public String toString() {
return "Route [channelNo=" + channelNo + ", transType=" + transType
+ ", refInterface=" + refInterface + ", method=" + method
+ ", refId=" + refId + ", desc=" + desc + "]";
}
}
/**
* 调用路由系统中的接口:
* @author rpl
* @date 2016-01-19
*
*/
import java.lang.reflect.Method;
import java.util.Map;
import com.ielpm.pay.common.Results;
import com.ielpm.pay.web.bean.Route;
import com.ielpm.pay.web.bean.RouteWrapper;
import com.ielpm.pay.web.spring.BeanFactory;
/*
逻辑:读取route.properties配置文件,根据渠道编号和交易类型查询出一条Route实例信息,通过dubbo将总系统和子系统进行通信,总系统利用Route实例中包含的服务全路径和方法名称利用java反射机制调用对应子系统的服务从而向银行发送请求。
*/
public class ProxyUtil {
@SuppressWarnings("rawtypes")
public static Results handler(String channelNo, String transType, Map args){
Results results = new Results();
try{
Route route = new RouteWrapper().getRoute(channelNo, transType);
if(route == null){
results.setCode("1000");
results.setMsg("没有可用的交易通道");
}else{
Object targetBean = BeanFactory.getBean(route.getRefId());
Class target = Class.forName(route.getRefInterface());
Method method = target.getMethod(route.getMethod(), Map.class);
results = (Results) method.invoke(targetBean, args);
}
}catch(Exception e){
e.printStackTrace();
}
return results;
}
}
/**
* route.properties文件内容:
* @author rpl
* @date 2016-01-19
*
*/
channel_route=[{"channelNo":"30505", "transType":"pay", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"pay", "desc":"\u6c11\u751f-\u652f\u4ed8" },\
{"channelNo":"30505", "transType":"notify", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"notify", "desc":"\u6c11\u751f-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"30505", "transType":"callback", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"callback", "desc":"\u6c11\u751f-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"30505", "transType":"query", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"query", "desc":"\u6c11\u751f-\u67e5\u8be2" },\
{"channelNo":"30505", "transType":"refund", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"refund", "desc":"\u6c11\u751f-\u9000\u6b3e" },\
{"channelNo":"jd001", "transType":"pay", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"pay", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u652f\u4ed8" },\
{"channelNo":"jd001", "transType":"notify", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"notify", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"jd001", "transType":"callback", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"callback", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"jd001", "transType":"query", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"query", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u67e5\u8be2" },\
{"channelNo":"jd002", "transType":"pay", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"pay", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u652f\u4ed8" },\
{"channelNo":"jd002", "transType":"query", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"query", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u67e5\u8be2" },\
{"channelNo":"jd002", "transType":"refund", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"refund", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u9000\u6b3e" },\
{"channelNo":"jd002", "transType":"notify", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"notify", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"jd002", "transType":"callback", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"callback", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"30508", "transType":"pay", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"pay", "desc":"\u6c11\u751fH5-\u652f\u4ed8" },\
{"channelNo":"30508", "transType":"notify", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"notify", "desc":"\u6c11\u751fH5-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"30508", "transType":"callback", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"callback", "desc":"\u6c11\u751fH5-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"30508", "transType":"query", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"query", "desc":"\u6c11\u751fH5-\u67e5\u8be2" },\
{"channelNo":"30508", "transType":"refund", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"refund", "desc":"\u6c11\u751fH5-\u9000\u6b3e" },\
{"channelNo":"ys003", "transType":"pay", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"pay", "desc":"\u94f6\u76db\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"ys003", "transType":"notify", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"notify", "desc":"\u94f6\u76db\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"ys003", "transType":"callback", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"callback", "desc":"\u94f6\u76db\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"ys003", "transType":"query", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"query", "desc":"\u94f6\u76db\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"ys003", "transType":"refund", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"refund", "desc":"\u94f6\u76db\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"ttf01", "transType":"pay", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"pay", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"ttf01", "transType":"notify", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"notify", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"ttf01", "transType":"callback", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"callback", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"ttf01", "transType":"query", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"query", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"ttf01", "transType":"refund", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"refund", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"ldx01", "transType":"pay", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"pay", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"ldx01", "transType":"notify", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"notify", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"ldx01", "transType":"callback", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"callback", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"ldx01", "transType":"query", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"query", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"ldx01", "transType":"refund", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"refund", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"qq001", "transType":"pay", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"pay", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"qq001", "transType":"notify", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"notify", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"qq001", "transType":"callback", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"callback", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"qq001", "transType":"query", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"query", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"qq001", "transType":"refund", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"refund", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"pay", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"pay", "desc":"\u6052\u4fe1\u901a\u7f51\u5173(b2c)-\u652f\u4ed8" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"notify", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"notify", "desc":"\u6052\u4fe1\u901a\u7f51\u5173(b2c)-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"callback", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"callback", "desc":"\u6052\u4fe1\u901a\u7f51\u5173(b2c)-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"query", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"query", "desc":"\u6052\u4fe1\u901a(b2c)-\u67e5\u8be2" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"refund", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"refund", "desc":"\u6052\u4fe1\u901a(b2c)-\u9000\u6b3e" },\
{"channelNo":"hj01,hj02", "transType":"pay", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"pay", "desc":"\u6c47\u805a\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"hj01,hj02", "transType":"notify", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"notify", "desc":"\u6c47\u805a\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"hj01,hj02", "transType":"callback", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"callback", "desc":"\u6c47\u805a\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"hj01,hj02", "transType":"query", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"query", "desc":"\u6c47\u805a\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"hj01,hj02", "transType":"refund", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"refund", "desc":"\u6c47\u805a\u7f51\u5173-\u9000\u6b3e" }]
2,读取.properties文件:
package com.buybal.mgr.util;
import java.io.FileReader;
import java.util.Map;
import org.apache.log4j.Logger;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class JsonUtil {
private final static Logger logger = Logger.getLogger(JsonUtil.class);
public static String getDataFromJsonFile(String dirPath,String jsonFileName)
{
//实例化解析json的对象
JsonParser jp=new JsonParser();
//解析文件后得到json元素,将元素转为json对象
JsonObject jo = null;
if ((dirPath == null) || ("".equals(dirPath)))
{
logger.error("getDataFromJsonFile dirPath is null");
return null;
}
if ((jsonFileName == null) || ("".equals(jsonFileName)))
{
logger.error("getDataFromJsonFile jsonFileName is null");
return null;
}
try {
//json文件存放路径
String jsonFilePath = dirPath+jsonFileName+".json";
logger.debug("json文件存放路径为:"+jsonFilePath);
jo = (JsonObject) jp.parse(new FileReader(jsonFilePath));
if(jo != null){
logger.debug("读取到的json文件内容为:"+jo.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
return jo!=null? jo.toString() : "";
}
public static void main(String[] args) throws Exception
{
//实例化解析json的对象
JsonParser jp=new JsonParser();
//解析文件后得到json元素,将元素转为json对象
JsonObject jo = null;
jo = (JsonObject) jp.parse(new FileReader("E:/mccCode.json"));
@SuppressWarnings("unchecked")
Map<String,String> strMap = com.buybal.util.JsonUtil.jsonToMap(jo.toString());
System.out.println(strMap);
}
}
mccCode.json文件
{
"8031":"正骨医生",
"8041":"按摩医生",
"8042":"眼科医生",
"8043":"光学产品、眼镜店",
"8049":"手足病医生",
"8021":"牙科医生"
}
一般读取.properties文件方法:
import java.util.ResourceBundle;
private static final String KEY = "jkurl";
ResourceBundle ap = ResourceBundle.getBundle("route");
String jkurlContent = ap.getString(KEY);
route.properties内容:
jkurl=http://10.9.12.3:10087/quickcmbc/CMBC/query
import java.util.ResourceBundle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import com.ielpm.pay.web.cache.Cache;
/**
* 存放子系统方法路由,并定期更新配置,由TIMEOUT配置周期
* @author rpl
* @date 2016-01-19
*
*/
public class RouteWrapper {
private static final String KEY = "channel_route";
private static Table<String, String, Route> table;
private static ResourceBundle ap;
private static Cache routeCache;
private static final Long TIMEOUT = 30L; //MINUTES
static{
routeCache = new Cache<String, Table<String, String, Route>>(TIMEOUT);
}
@SuppressWarnings("unchecked")
public Route getRoute(String channelNo, String transType){
try{
table = (Table<String, String, Route>) routeCache.get(KEY);
if(table == null){
init();
}
}catch(Exception e){
init();
}
return table.get(channelNo, transType);
}
private void convertJsonArray(String jsonArray){
try{
JSON json = null;
JSONArray array = JSON.parseArray(jsonArray);
Route route = null;
String[] channelNoes;
for(int i=0,len = array.size(); i<len; i++){
json = array.getJSONObject(i);
route = JSON.parseObject(json.toJSONString(), Route.class);
channelNoes = route.getChannelNo().split(",");
for(String channelNo : channelNoes){
table.put(channelNo, route.getTransType(), route);
}
}
}catch(Exception e){
e.printStackTrace();
}
}
private synchronized void init(){
ap = ResourceBundle.getBundle("route");
table = HashBasedTable.create();
String routeJson = ap.getString(KEY);
convertJsonArray(routeJson);
routeCache.put(KEY, table);
}
}
/**
* 路由类
* @author rpl
* @date 2016-01-19
*
*/
public class Route {
private String channelNo;
private String transType;
private String refInterface;
private String method;
private String refId;
private String desc;
public String getChannelNo() {
return channelNo;
}
public void setChannelNo(String channelNo) {
this.channelNo = channelNo;
}
public String getTransType() {
return transType;
}
public void setTransType(String transType) {
this.transType = transType;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getRefId() {
return refId;
}
public void setRefId(String refId) {
this.refId = refId;
}
public String getRefInterface() {
return refInterface;
}
public void setRefInterface(String refInterface) {
this.refInterface = refInterface;
}
@Override
public String toString() {
return "Route [channelNo=" + channelNo + ", transType=" + transType
+ ", refInterface=" + refInterface + ", method=" + method
+ ", refId=" + refId + ", desc=" + desc + "]";
}
}
/**
* 调用路由系统中的接口:
* @author rpl
* @date 2016-01-19
*
*/
import java.lang.reflect.Method;
import java.util.Map;
import com.ielpm.pay.common.Results;
import com.ielpm.pay.web.bean.Route;
import com.ielpm.pay.web.bean.RouteWrapper;
import com.ielpm.pay.web.spring.BeanFactory;
/*
逻辑:读取route.properties配置文件,根据渠道编号和交易类型查询出一条Route实例信息,通过dubbo将总系统和子系统进行通信,总系统利用Route实例中包含的服务全路径和方法名称利用java反射机制调用对应子系统的服务从而向银行发送请求。
*/
public class ProxyUtil {
@SuppressWarnings("rawtypes")
public static Results handler(String channelNo, String transType, Map args){
Results results = new Results();
try{
Route route = new RouteWrapper().getRoute(channelNo, transType);
if(route == null){
results.setCode("1000");
results.setMsg("没有可用的交易通道");
}else{
Object targetBean = BeanFactory.getBean(route.getRefId());
Class target = Class.forName(route.getRefInterface());
Method method = target.getMethod(route.getMethod(), Map.class);
results = (Results) method.invoke(targetBean, args);
}
}catch(Exception e){
e.printStackTrace();
}
return results;
}
}
/**
* route.properties文件内容:
* @author rpl
* @date 2016-01-19
*
*/
channel_route=[{"channelNo":"30505", "transType":"pay", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"pay", "desc":"\u6c11\u751f-\u652f\u4ed8" },\
{"channelNo":"30505", "transType":"notify", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"notify", "desc":"\u6c11\u751f-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"30505", "transType":"callback", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"callback", "desc":"\u6c11\u751f-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"30505", "transType":"query", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"query", "desc":"\u6c11\u751f-\u67e5\u8be2" },\
{"channelNo":"30505", "transType":"refund", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"refund", "desc":"\u6c11\u751f-\u9000\u6b3e" },\
{"channelNo":"jd001", "transType":"pay", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"pay", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u652f\u4ed8" },\
{"channelNo":"jd001", "transType":"notify", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"notify", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"jd001", "transType":"callback", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"callback", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"jd001", "transType":"query", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"query", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u67e5\u8be2" },\
{"channelNo":"jd002", "transType":"pay", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"pay", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u652f\u4ed8" },\
{"channelNo":"jd002", "transType":"query", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"query", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u67e5\u8be2" },\
{"channelNo":"jd002", "transType":"refund", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"refund", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u9000\u6b3e" },\
{"channelNo":"jd002", "transType":"notify", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"notify", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"jd002", "transType":"callback", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"callback", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"30508", "transType":"pay", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"pay", "desc":"\u6c11\u751fH5-\u652f\u4ed8" },\
{"channelNo":"30508", "transType":"notify", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"notify", "desc":"\u6c11\u751fH5-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"30508", "transType":"callback", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"callback", "desc":"\u6c11\u751fH5-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"30508", "transType":"query", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"query", "desc":"\u6c11\u751fH5-\u67e5\u8be2" },\
{"channelNo":"30508", "transType":"refund", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"refund", "desc":"\u6c11\u751fH5-\u9000\u6b3e" },\
{"channelNo":"ys003", "transType":"pay", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"pay", "desc":"\u94f6\u76db\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"ys003", "transType":"notify", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"notify", "desc":"\u94f6\u76db\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"ys003", "transType":"callback", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"callback", "desc":"\u94f6\u76db\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"ys003", "transType":"query", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"query", "desc":"\u94f6\u76db\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"ys003", "transType":"refund", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"refund", "desc":"\u94f6\u76db\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"ttf01", "transType":"pay", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"pay", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"ttf01", "transType":"notify", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"notify", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"ttf01", "transType":"callback", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"callback", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"ttf01", "transType":"query", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"query", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"ttf01", "transType":"refund", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"refund", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"ldx01", "transType":"pay", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"pay", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"ldx01", "transType":"notify", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"notify", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"ldx01", "transType":"callback", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"callback", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"ldx01", "transType":"query", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"query", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"ldx01", "transType":"refund", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"refund", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"qq001", "transType":"pay", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"pay", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"qq001", "transType":"notify", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"notify", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"qq001", "transType":"callback", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"callback", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"qq001", "transType":"query", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"query", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"qq001", "transType":"refund", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"refund", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"pay", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"pay", "desc":"\u6052\u4fe1\u901a\u7f51\u5173(b2c)-\u652f\u4ed8" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"notify", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"notify", "desc":"\u6052\u4fe1\u901a\u7f51\u5173(b2c)-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"callback", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"callback", "desc":"\u6052\u4fe1\u901a\u7f51\u5173(b2c)-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"query", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"query", "desc":"\u6052\u4fe1\u901a(b2c)-\u67e5\u8be2" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"refund", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"refund", "desc":"\u6052\u4fe1\u901a(b2c)-\u9000\u6b3e" },\
{"channelNo":"hj01,hj02", "transType":"pay", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"pay", "desc":"\u6c47\u805a\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"hj01,hj02", "transType":"notify", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"notify", "desc":"\u6c47\u805a\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"hj01,hj02", "transType":"callback", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"callback", "desc":"\u6c47\u805a\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"hj01,hj02", "transType":"query", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"query", "desc":"\u6c47\u805a\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"hj01,hj02", "transType":"refund", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"refund", "desc":"\u6c47\u805a\u7f51\u5173-\u9000\u6b3e" }]
2,读取.properties文件:
package com.buybal.mgr.util;
import java.io.FileReader;
import java.util.Map;
import org.apache.log4j.Logger;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class JsonUtil {
private final static Logger logger = Logger.getLogger(JsonUtil.class);
public static String getDataFromJsonFile(String dirPath,String jsonFileName)
{
//实例化解析json的对象
JsonParser jp=new JsonParser();
//解析文件后得到json元素,将元素转为json对象
JsonObject jo = null;
if ((dirPath == null) || ("".equals(dirPath)))
{
logger.error("getDataFromJsonFile dirPath is null");
return null;
}
if ((jsonFileName == null) || ("".equals(jsonFileName)))
{
logger.error("getDataFromJsonFile jsonFileName is null");
return null;
}
try {
//json文件存放路径
String jsonFilePath = dirPath+jsonFileName+".json";
logger.debug("json文件存放路径为:"+jsonFilePath);
jo = (JsonObject) jp.parse(new FileReader(jsonFilePath));
if(jo != null){
logger.debug("读取到的json文件内容为:"+jo.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
return jo!=null? jo.toString() : "";
}
public static void main(String[] args) throws Exception
{
//实例化解析json的对象
JsonParser jp=new JsonParser();
//解析文件后得到json元素,将元素转为json对象
JsonObject jo = null;
jo = (JsonObject) jp.parse(new FileReader("E:/mccCode.json"));
@SuppressWarnings("unchecked")
Map<String,String> strMap = com.buybal.util.JsonUtil.jsonToMap(jo.toString());
System.out.println(strMap);
}
}
mccCode.json文件
{
"8031":"正骨医生",
"8041":"按摩医生",
"8042":"眼科医生",
"8043":"光学产品、眼镜店",
"8049":"手足病医生",
"8021":"牙科医生"
}
一般读取.properties文件方法:
import java.util.ResourceBundle;
private static final String KEY = "jkurl";
ResourceBundle ap = ResourceBundle.getBundle("route");
String jkurlContent = ap.getString(KEY);
route.properties内容:
jkurl=http://10.9.12.3:10087/quickcmbc/CMBC/query