diff --git a/src/main/java/com/sunyard/sge/database/SydApi4Database.java b/src/main/java/com/sunyard/sge/database/SydApi4Database.java index 3072bcf..1eefcab 100644 --- a/src/main/java/com/sunyard/sge/database/SydApi4Database.java +++ b/src/main/java/com/sunyard/sge/database/SydApi4Database.java @@ -14,11 +14,10 @@ import java.util.List; * 上海黄金交易所 - 数据库加密方案 */ public class SydApi4Database implements SydApi { - Logger log = LogFactory.getLogger(); + private SydApi4j[] hsms = null; private boolean isShortLinkMode = false; - @Deprecated public SydApi4Database() { isShortLinkMode = true; } @@ -29,21 +28,31 @@ public class SydApi4Database implements SydApi { @Override public SydApi SYD_Short_Connect_Ex(String[] pcIpList, int[] iPortList, int iConnectTimeOut, int iDealTimeOut) { + Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel==3) { log.debug("SYD_Connect_Ex方法接收参数:pcIpList:{},iPortList:{},iConnectTimeOut:{},iDealTimeOut:{}", Arrays.toString(pcIpList), Arrays.toString(iPortList), iConnectTimeOut, iDealTimeOut); } - if (iPortList==null||iPortList.length==0){ - throw new SydApiException("没有ip地址",-1); - } - if (iPortList.length!=iPortList.length) { - throw new SydApiException("ip与端口号数量不一致",-1); - } - SydApi4j api = null; - for (int i = 0; i < pcIpList.length ; i++) { - api = (SydApi4j) new SydApi4j().connect(pcIpList[i], iPortList[i], null, iConnectTimeOut); + + if (pcIpList.length!=iPortList.length) { + throw new IllegalArgumentException("ip与端口数量不一致"); } - hsms = new SydApi4j[]{api}; + SydApi4j[] apis = new SydApi4j[pcIpList.length]; + + for (int i = 0; i < pcIpList.length ; i++) { + + try { + + apis[i] = (SydApi4j) new SydApi4j().connect(pcIpList[i], iPortList[i], null, iConnectTimeOut); + + }catch ( Exception e) { + // 忽略错误 + log.error("网络连接错误 {} {} - 忽略",pcIpList[i], iPortList[i]); + } + + } + + hsms = apis; isShortLinkMode = true; return this; } @@ -54,25 +63,24 @@ public class SydApi4Database implements SydApi { if ( null == hsms ){ return; } - SydApi4j api = null; + for (int i = 0; i < hsms.length; i++) { - api = hsms[i]; + SydApi4j api = hsms[i]; if (null != api) { try { api.disconnect(); } catch (Exception e) { - continue; + } } } - - api = null; } // 配合链接池,不再需要释放。 } @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)); } @@ -99,6 +107,7 @@ 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); } @@ -136,6 +145,7 @@ 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); } @@ -177,6 +187,7 @@ 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); } @@ -218,6 +229,7 @@ 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); } @@ -261,6 +273,7 @@ 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()); } @@ -298,6 +311,7 @@ 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)); } @@ -335,6 +349,7 @@ 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); } @@ -385,6 +400,7 @@ 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); } @@ -401,6 +417,7 @@ 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 +446,7 @@ 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/SydApiBuilder.java b/src/main/java/com/sunyard/sge/database/SydApiBuilder.java index a8ce660..34c4306 100644 --- a/src/main/java/com/sunyard/sge/database/SydApiBuilder.java +++ b/src/main/java/com/sunyard/sge/database/SydApiBuilder.java @@ -36,7 +36,7 @@ public class SydApiBuilder { SydApi api = null; try { api = new SydApi4Database(); - api.SYD_Connect_Ex( pcIpList, iPortList, iConnectTimeOut, iDealTimeOut ); + api.SYD_Short_Connect_Ex( pcIpList, iPortList, iConnectTimeOut, iDealTimeOut ); try { @@ -44,6 +44,7 @@ public class SydApiBuilder { }catch ( Exception e) { // 忽略 + } try { 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 7239a2a..cab7c58 100644 --- a/src/main/java/com/sunyard/sge/database/pool/SydApiPool.java +++ b/src/main/java/com/sunyard/sge/database/pool/SydApiPool.java @@ -2,7 +2,9 @@ package com.sunyard.sge.database.pool; import com.sunyard.sge.database.SydApi; import com.sunyard.sge.database.SydApi4Database; +import com.sunyard.sge.log.LogFactory; import com.sunyard.sge.pool.ThreadBasedConnectPool; +import org.apache.logging.log4j.Logger; import racal.sunyard.main.SydApi4j; public class SydApiPool extends ThreadBasedConnectPool { @@ -33,7 +35,9 @@ public class SydApiPool extends ThreadBasedConnectPool { ); connected = true; } catch ( Exception e ) { + Logger log = LogFactory.getLogger(); // 忽略单个错误 + log.error("网络连接错误 {} {} - 忽略",info.getPcIp(),info.getiPort()); } } diff --git a/src/test/java/sample/ShortLinkSample.java b/src/test/java/sample/ShortLinkSample.java new file mode 100644 index 0000000..34ad022 --- /dev/null +++ b/src/test/java/sample/ShortLinkSample.java @@ -0,0 +1,25 @@ +package sample; + +import com.sunyard.sge.database.SydApi; +import com.sunyard.sge.database.SydApi4Database; + +public class ShortLinkSample { + + public static void main(String[] args) { + + // 路径要以 / 或 \\ 结尾表示目录 + SydApi.SYD_SetLogConfig("./logs/",3); + + String[] pcipList = {"127.0.0.1", "192.168.0.200" }; + int[] iportList ={8080,8889}; + SydApi api = new SydApi4Database(); + try { + api.SYD_Short_Connect_Ex(pcipList,iportList,10,10); + } finally { + if ( null != api ) { + api.SYD_Disconnect_Ex(); + } + } + + } +} diff --git a/src/test/java/test/FuncTest.java b/src/test/java/test/FuncTest.java index b220831..282f45b 100644 --- a/src/test/java/test/FuncTest.java +++ b/src/test/java/test/FuncTest.java @@ -1,9 +1,13 @@ package test; +import com.sunyard.sge.database.Consts; import com.sunyard.sge.database.SydApi; +import com.sunyard.sge.database.SydApi4Database; import com.sunyard.sge.database.SydApiBuilder; import com.sunyard.sge.database.pool.HsmLinkInfo; import com.sunyard.sge.database.pool.SydApiPool; +import com.sunyard.sge.log.LogFactory; +import org.apache.logging.log4j.Logger; import org.junit.Before; import org.junit.Test; @@ -23,6 +27,21 @@ public class FuncTest { } + @Test + public void syd_Short_Connect_Ex(){ + String[] pcipList = {"127.0.0.1", "192.168.0.200" }; + int[] iportList ={8080,8889}; + SydApi api = new SydApi4Database(); + try { + api.SYD_Short_Connect_Ex(pcipList,iportList,10,10); + } finally { + if ( null != api ) { + api.SYD_Disconnect_Ex(); + } + } + } + + @Test public void sm3(){ SydApiBuilder builder = new SydApiBuilder( @@ -35,4 +54,23 @@ public class FuncTest { api = builder.build(); } + + + @Test + public void origin() throws Exception { + SydApiBuilder builder = new SydApiBuilder(new String[]{"192.168.0.200"}, new int[]{8889}, 10, 15); + SydApi.SYD_SetLogConfig("./logs/",3); + Logger log = LogFactory.getLogger(); + final SydApi api = builder.build(); + for (int i = 0; i < 1000; i++) { + int tmp = i; + new Thread(() -> { + for (int j = 0; j < 20; j++) { + byte[] bytes = api.SYD_SM4_ShortData(0, (tmp + "t" + j).getBytes(), Consts.ECB_ENC); + byte[] result = api.SYD_SM4_ShortData(0, bytes, Consts.ECB_DEC); + System.out.println(Thread.currentThread().getName() + "," + new String(result)); + } + }, i + "t").start(); + } + } } diff --git a/src/test/java/test/LogTest.java b/src/test/java/test/LogTest.java index abf54e4..fdc57e2 100644 --- a/src/test/java/test/LogTest.java +++ b/src/test/java/test/LogTest.java @@ -14,5 +14,6 @@ public class LogTest { log.error("error"); log.info("info"); log.debug("debug"); + System.out.println(new byte[0].length); } } diff --git a/src/test/java/test/PrefTest.java b/src/test/java/test/PrefTest.java index a714e24..5bac877 100644 --- a/src/test/java/test/PrefTest.java +++ b/src/test/java/test/PrefTest.java @@ -18,7 +18,7 @@ public class PrefTest final SydApi api = new SydApi4Database(); try { - api.SYD_Connect_Ex( + api.SYD_Short_Connect_Ex( new String[]{ "192.168.0.200" }, new int[]{ 8889 }, 10,