diff --git a/src/main/java/com/sunyard/sge/database/SydApi4Database.java b/src/main/java/com/sunyard/sge/database/SydApi4Database.java index bb1191d..929e4a9 100644 --- a/src/main/java/com/sunyard/sge/database/SydApi4Database.java +++ b/src/main/java/com/sunyard/sge/database/SydApi4Database.java @@ -14,7 +14,7 @@ import java.util.List; * 上海黄金交易所 - 数据库加密方案 */ public class SydApi4Database implements SydApi { - + static Logger log = LogFactory.getLogger(); private SydApi4j[] hsms = null; private boolean isShortLinkMode = false; @@ -28,7 +28,6 @@ public class SydApi4Database implements SydApi { @Override public SydApi SYD_Short_Connect_Ex(String[] pcIpList, int[] iPortList, int iConnectTimeOut, int allDealTimeOut) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_Connect_Ex方法接收参数:pcIpList:{},iPortList:{},iConnectTimeOut:{},iDealTimeOut:{}", Arrays.toString(pcIpList), Arrays.toString(iPortList), iConnectTimeOut, allDealTimeOut); } @@ -39,18 +38,26 @@ public class SydApi4Database implements SydApi { SydApi4j[] apis = new SydApi4j[pcIpList.length]; int iDealTimeOut = allDealTimeOut / pcIpList.length; + boolean connected = false; for (int i = 0; i < pcIpList.length ; i++) { try { apis[i] = (SydApi4j) new SydApi4j().connect(pcIpList[i], iPortList[i], null, iConnectTimeOut, iDealTimeOut); - - }catch ( Exception e) { + connected = true; + } + catch ( Exception e) { // 忽略错误 log.error("网络连接错误 {} {} - 忽略",pcIpList[i], iPortList[i]); } } + if( ! connected ) { + // TODO + throw new SydApiException("连接错误",-1); + } + + hsms = apis; isShortLinkMode = true; @@ -76,11 +83,12 @@ public class SydApi4Database implements SydApi { } } // 配合链接池,不再需要释放。 + + } @Override public String SYD_SM3_Hash_ShortData(byte[] pcData) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM3_Hash_ShortData方法接收参数:pcData:{}", Arrays.toString(pcData)); } @@ -90,6 +98,11 @@ public class SydApi4Database implements SydApi { SydApiException le = null; for (SydApi4j api : this.hsms) { + + if ( null == api ) { + continue; + } + try { byte[] hash = api.SYD_SM3_LongData(pcData, null, 0); log.debug("api.SYD_SM3_LongData方法返回值:{}",Arrays.toString(hash)); @@ -107,7 +120,6 @@ public class SydApi4Database implements SydApi { @Override public LongDataReturn SYD_SM3_Hash_LongData(byte[] pcData, int iPkgNum, String pcProcData) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM3_Hash_LongData方法接收参数:pcData:{},iPkgNum:{},pcProcData:{}", Arrays.toString(pcData), iPkgNum, pcProcData); } @@ -124,6 +136,9 @@ public class SydApi4Database implements SydApi { } SydApiException le = null; for (SydApi4j api : this.hsms) { + if ( null == api ) { + continue; + } try { byte[] hash = api.SYD_SM3_LongData(pcData, procData, iPkgNum); log.debug("api.SYD_SM3_LongData方法返回值:{}",Arrays.toString(hash)); @@ -145,7 +160,6 @@ public class SydApi4Database implements SydApi { @Override public byte[] SYD_SM4_ShortData(int iKeyIndex, byte[] pcData, int iFlag) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM4_ShortData方法接收参数:iKeyIndex:{},pcData:{},iFlag:{}", iKeyIndex, Arrays.toString(pcData), iFlag); } @@ -159,8 +173,10 @@ public class SydApi4Database implements SydApi { String keyIndex = String.format("%08d", iKeyIndex); SydApiException le = null; for (SydApi4j api : this.hsms) { + if ( null == api ) { + continue; + } try { - if (Consts.ECB_ENC == iFlag) { return api.SYMEncryptData( com.sunyard.SydApi.NALG_SM4, @@ -187,7 +203,6 @@ public class SydApi4Database implements SydApi { @Override public List SYD_SM4_BatchData(int[] iKeyIndex, List pcData, int iFlag) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM4_BatchData方法接收参数:iKeyIndex:{},pcData元素个数为:{},iFlag:{}", iKeyIndex, pcData.size(), iFlag); } @@ -209,6 +224,9 @@ public class SydApi4Database implements SydApi { SydApiException le = null; for (SydApi4j api : this.hsms) { + if ( null == api ) { + continue; + } try { if (Consts.ECB_ENC == iFlag) { return api.SYMEncryptDecryptBatchData(8, 1, null, keys, 1, pcData); @@ -229,7 +247,6 @@ public class SydApi4Database implements SydApi { @Override public byte[] SYD_SM4_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, int iFlag) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM4_LongData方法接收参数:iKeyIndex:{},pcData:{},iPkgNum:{},iFlag:{}", iKeyIndex, Arrays.toString(pcData), iPkgNum, iFlag); } @@ -243,6 +260,9 @@ public class SydApi4Database implements SydApi { SydApiException le = null; for (SydApi4j api : this.hsms) { + if ( null == api ) { + continue; + } try { if (Consts.ECB_ENC == iFlag) { return api.SYD_SM4_LongData( @@ -273,7 +293,6 @@ public class SydApi4Database implements SydApi { @Override public String[] SYD_SM4Mac_BatchData(int[] iKeyIndex, List pcData) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM4Mac_BatchData:iKeyIndex:{},pcData元素个数为:{}", iKeyIndex, pcData.size()); } @@ -287,6 +306,9 @@ public class SydApi4Database implements SydApi { } SydApiException le = null; for (SydApi4j api : this.hsms) { + if ( null == api ) { + continue; + } try { List list = api.SYMEncryptDecryptBatchData(8, 2, null, keys, 1, pcData); String[] ret = new String[list.size()]; @@ -311,7 +333,6 @@ public class SydApi4Database implements SydApi { @Override public boolean[] SYD_SM4Mac_BatchData(int[] iKeyIndex, List pcData, String[] pcMac) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM4Mac_BatchData方法接收参数:iKeyIndex:{},pcData元素个数为:{},pcMac:{}", iKeyIndex, pcData.size(), Arrays.toString(pcMac)); } @@ -325,6 +346,9 @@ public class SydApi4Database implements SydApi { } SydApiException le = null; for (SydApi4j api : this.hsms) { + if ( null == api ) { + continue; + } try { List list = api.SYMEncryptDecryptBatchData(8, 2, null, keys, 1, pcData); boolean[] ret = new boolean[list.size()]; @@ -349,7 +373,6 @@ public class SydApi4Database implements SydApi { @Override public LongDataReturn SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, String pcProcData) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM4Mac_LongData方法接收参数:iKeyIndex:{},pcData:{},iPkgNum:{},pcProcData:{}", iKeyIndex, Arrays.toString(pcData), iPkgNum, pcProcData); } @@ -368,6 +391,9 @@ public class SydApi4Database implements SydApi { SydApiException le = null; for (SydApi4j api : this.hsms) { + if ( null == api ) { + continue; + } try { byte[] ret = api.SYD_SM4_LongData( 8, @@ -400,7 +426,6 @@ public class SydApi4Database implements SydApi { @Override public LongDataReturn SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, String pcProcData, String pcMac) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM4Mac_LongData方法接收参数:iKeyIndex:{},pcData:{},iPkgNum:{},pcProcData:{}", iKeyIndex, Arrays.toString(pcData), iPkgNum, pcProcData, pcMac); } @@ -417,7 +442,6 @@ public class SydApi4Database implements SydApi { @Override public String SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM4Mac_ShortData方法接收参数:iKeyIndex:{},pcData:{},iFlag:{}", iKeyIndex, Arrays.toString(pcData)); } @@ -429,6 +453,9 @@ public class SydApi4Database implements SydApi { log.debug("\"SK\" + SYMUtil.genPrivateKeyMark方法返回值:{}",keyIndex); SydApiException le = null; for (SydApi4j api : this.hsms) { + if ( null == api ) { + continue; + } try { return api.SYD_SM4Mac_ShortData(keyIndex, pcData); @@ -446,7 +473,6 @@ public class SydApi4Database implements SydApi { @Override public boolean SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData, String pcMac) { - Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_SM4Mac_ShortData方法接收参数:{}", iKeyIndex, Arrays.toString(pcData), pcMac); } diff --git a/src/main/java/com/sunyard/sge/database/pool/SydApiPool.java b/src/main/java/com/sunyard/sge/database/pool/SydApiPool.java index cab7c58..4650f7c 100644 --- a/src/main/java/com/sunyard/sge/database/pool/SydApiPool.java +++ b/src/main/java/com/sunyard/sge/database/pool/SydApiPool.java @@ -1,5 +1,6 @@ package com.sunyard.sge.database.pool; +import com.sunyard.SydApiException; import com.sunyard.sge.database.SydApi; import com.sunyard.sge.database.SydApi4Database; import com.sunyard.sge.log.LogFactory; @@ -41,6 +42,12 @@ public class SydApiPool extends ThreadBasedConnectPool { } } + if( ! connected ) { + // TODO + throw new SydApiException("连接错误",-1); + } + + return new SydApi4Database( apis ); }