基于连接池+jsch框架的ssh2工具类实现远程命令执行,文件上传,文件下载及进度条等功能
池化框架:common-pool
ssh2协议客户端:jsch
maven依赖:
<!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.54</version> </dependency>
涉及到的模块:
服务器账号标识:ServerAccount
连接池工厂类:SshConnectionPoolFactory
连接池对象:GenericKeyedObjectPool
进度条监视器:
ServerAccount类
/** * @author liangxiaohui * @version 1.0.0 * @ClassName ServerAccount.java * @Description TODO * @createTime 2021年11月03日 16:17:00 */ public class ServerAccount { private String host; private String port; private String userName; private String password; public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getPort() { return port; } public void setPort(String port) { this.port = port; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public int hashCode() { return (host+port+userName+password).hashCode(); } @Override public boolean equals(Object obj) { ServerAccount serverAccount=(ServerAccount)obj; return (host+port+userName+password).equals(serverAccount.getHost()+serverAccount.getPort()+serverAccount.getUserName()+serverAccount.getPassword()); } }
连接池工具类:SshConnectionPoolUtil
连接池:GenericKeyedObjectPool
连接池内部工厂类:SshConnectionPoolFactory
import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import org.apache.commons.pool.KeyedPoolableObjectFactory; import org.apache.commons.pool.impl.GenericKeyedObjectPool; import org.apache.log4j.Logger; import java.util.Properties; /** * @author liangxiaohui * @version 1.0.0 * @ClassName ssh ConnectionPoolUtil.java * @Description 连接池工具类() */ public class SshConnectionPoolUtil { private static Logger logger = Logger.getLogger(SshConnectionPoolUtil.class); private static GenericKeyedObjectPool<ServerAccount, Session> pool; //连接超时时间 private static final int connectionTimeOut = 60 * 60 * 12; private static final int poolMaxActive = 6; private static final int poolMaxIdle = 4; private static final int poolMinIdle = 1; private static final int poolMaxWait = -1; private static final int poolTimeBetweenEvictionRunsMillis = 30000; //初始化连接池 protected static GenericKeyedObjectPool<ServerAccount, Session> getConnectionPool() { if (pool == null) { synchronized (SshConnectionPoolUtil.class) { if (pool == null) { GenericKeyedObjectPool.Config config = new GenericKeyedObjectPool.Config(); config.lifo = false; config.maxActive = poolMaxActive;//最大激活数 config.maxIdle = poolMaxIdle;//最大空闲数 config.minIdle = poolMinIdle;//最小空闲数 config.maxWait = poolMaxWait;//最大等待时间 config.testOnBorrow = true;//获取对象是否检测有效性 config.testOnReturn = true;//归还对象是否检测有效性 config.testWhileIdle = true;//不需要移除的对象是否检测有效性 config.timeBetweenEvictionRunsMillis = poolTimeBetweenEvictionRunsMillis;//检测时间间隔 单位ms pool = new GenericKeyedObjectPool(new SshConnectionPoolFactory(), config); } } } return pool; } //通过连接信息获取连接实例 public static Session getConnectionByServerAccount(ServerAccount serverAccount) throws Exception { return getConnectionPool().borrowObject(serverAccount); } //归还连接实例s public static void returnConnectionToPool(ServerAccount serverAccount, Session session) throws Exception { getConnectionPool().returnObject(serverAccount, session); getConnectionPool().clearOldest(); } //扫描连接池中当前可用实例数量 public static void countConnectionNumForPool() { logger.info("对象池当前激活实例总数量111>>>>:" + getConnectionPool().getNumActive()); logger.info("对象池当前空闲实例总数量111>>>>:" + getConnectionPool().getNumIdle()); } //---------------------------------------------------------------------------------------------------- //--------------------------------------连接池初始化内部工厂类------------------------------------------ //---------------------------------------------------------------------------------------------------- /** * @author liangxiaohui * @version 1.0.0 * @ClassName ConnectionPoolFactory.java * @Description 内部工厂类-对象池 */ public static class SshConnectionPoolFactory implements KeyedPoolableObjectFactory<ServerAccount, Session> { private static Logger logger = Logger.getLogger(SshConnectionPoolFactory.class); @Override public Session makeObject(ServerAccount key){ Properties properties = new Properties(); properties.put("StrictHostKeyChecking", "no"); JSch jSch = new JSch(); Session session = null; try { session = jSch.getSession(key.getUserName(), key.getHost(), Integer.parseInt(key.getPort())); session.setPassword(key.getPassword()); session.setTimeout(connectionTimeOut); session.setConfig(properties); session.connect(); logger.info("ssh连接池正在创建新的session连接实例..."+key+":"+session); } catch (JSchException e) { e.printStackTrace(); } return session; } @Override public void destroyObject(ServerAccount key, Session obj){ logger.info("ssh连接池中session连接实例正在被销毁..."+key+":"+obj); obj.disconnect(); } @Override public boolean validateObject(ServerAccount key, Session obj) { if(obj.isConnected()){ try { obj.sendKeepAliveMsg(); return true; } catch (Exception e) { logger.info("ssh连接池中session连接实例已失效..."+key+":"+obj+":"+e.getMessage()); return false; } } return false; } @Override public void activateObject(ServerAccount key, Session obj) { logger.info("ssh连接池:正在获取session连接实例..."+key+":"+obj); } @Override public void passivateObject(ServerAccount key, Session obj) { logger.info("ssh连接池:正在归还session连接实例..."+key+":"+obj); } } }
进度条监控器:TransFileProgressMonitor
import com.jcraft.jsch.SftpProgressMonitor; import org.apache.log4j.Logger; /** * @author liangxiaohui * @version 1.0.0 * @ClassName TransFileProgressMonitor.java * @Description 文件传输监控器 * @createTime 2021年11月05日 10:48:00 */ public class TransFileProgressMonitor implements SftpProgressMonitor { private static Logger logger = Logger.getLogger(TransFileProgressMonitor.class); private long transfered;//已传输大小 private long totalSize;//文件总大小 private String filename;//文件名 private String dest;//目标文件 private String status;//传输状态 -2:未开始 -1:传输中 0:完成 private boolean printProgress; private long startTimeStemp=0L; private long timeOut=60; //超时时间 private String type;//传输类型,上传:put 下载:get private boolean isSuccess=false; //监控器构造函数 public TransFileProgressMonitor(String fileName,long fileSize,boolean printProgress,long timeOut) { this.filename=fileName; this.totalSize=fileSize; this.printProgress=printProgress; this.timeOut=timeOut; this.type="PUT"; } //监控器构造函数 public TransFileProgressMonitor(boolean printProgress,long timeOut) { this.printProgress=printProgress; this.timeOut=timeOut; this.type="GET"; } @Override //传输进度更新钩子函数 public boolean count(long count) { status="-1"; transfered = transfered + count; if(printProgress){ printTransProgressOnConsole(); } return true; } @Override //传输任务完成后钩子函数 public void end() { this.status="0"; isSuccess=(transfered==totalSize); System.out.println("\nTransferring done. > saved to:"+dest); } @Override //传输任务初始化钩子函数 public void init(int op, String src, String dest, long max) { this.status="-2"; if(this.type.equals("GET")){ this.totalSize=max; this.filename=src; } this.dest=dest; System.out.println("Transferring begin."); System.out.println("Trans source:"+src); System.out.println("Trans dest:"+dest); System.out.println("Trans total size:"+max); startTimeStemp=System.currentTimeMillis(); } //打印进度条 protected void printTransProgressOnConsole(){ long tp=Math.round((((double) transfered) / totalSize) * 100); StringBuilder sb= new StringBuilder(filename+">> 进度条:["); for (int i = 0; i <tp; i++) { sb.append("#"); } for (int i = 0; i <100-tp; i++) { sb.append("-"); } sb.append("] "+tp+"% ("+transfered+"/"+totalSize+")"); System.out.print("\r"+sb.toString()); } //判断传输是否已完成 public boolean isDone(){ return "0".equals(status); } //判断传输任务是否已超时 public boolean isTimeOut(){ return System.currentTimeMillis()-startTimeStemp>1000*timeOut; } public boolean isSuccess(){ return isSuccess; } }
server-ssh2工具类:ServerManager
import com.jcraft.jsch.*; import org.apache.log4j.Logger; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; /** * @author liangxiaohui * @version 1.0.0 * @ClassName ServerManager.java * @Description 服务器连接工具类 */ public class ServerManager { private static Logger logger = Logger.getLogger(ServerManager.class); //获取默认连接对象 public Session getDefaultServerConnectionFromPool() throws Exception { return null; } /** * 开启exec通道 * * @param session Session * @return ChanelExec */ public static ChannelExec openChannelExec(Session session) { ChannelExec channelExec = null; try { channelExec = (ChannelExec) session.openChannel("exec"); } catch (JSchException e) { e.printStackTrace(); } return channelExec; } /** * 关闭channelExec * * @param channelExec ChannelExec */ public static void closeChannelExec(ChannelExec channelExec) { if (channelExec != null) { channelExec.disconnect(); } } /** * 异步执行,不需要结果 * * @param session Session * @param cmd 命令 */ public static int execCmdWithOutResult(Session session, String cmd) { ChannelExec channelExec = openChannelExec(session); channelExec.setCommand(cmd); try { channelExec.connect(); } catch (JSchException e) { e.printStackTrace(); } int status = channelExec.getExitStatus(); closeChannelExec(channelExec); return status; } /** * 同步执行,需要获取执行完的结果 * * @param session Session * @param cmd 命令 * @return 结果 */ public static String execCmdWithResult(Session session, String cmd) { System.out.println("获取连接...."); ChannelExec channelExec = openChannelExec(session); channelExec.setCommand(cmd); String result = null; try { channelExec.setInputStream(null); channelExec.setErrStream(System.err); InputStream in = channelExec.getInputStream(); channelExec.connect(); byte[] tmp = new byte[1024]; while (true) { while (in.available() > 0) { int i = in.read(tmp, 0, 1024); if (i < 0) break; result = new String(tmp, 0, i); } if (channelExec.isClosed()) { System.out.println("exit-status: " + channelExec.getExitStatus()); break; } try { Thread.sleep(1000); } catch (Exception ee) { } } channelExec.disconnect(); System.out.println("DONE"); } catch (Exception e) { e.printStackTrace(); } return result; } //下载文件 public static int fetchFile(Session session, String sourceDir, String destDir) { ChannelSftp channelSftp = null; int result = -1; try { channelSftp = (ChannelSftp) session.openChannel("sftp"); channelSftp.connect(); TransFileProgressMonitor p = new TransFileProgressMonitor(true, 120); channelSftp.get(sourceDir, destDir, p); while ((!p.isDone() && !p.isTimeOut())) { Thread.sleep(2000); } if(p.isSuccess()){ result=0; } } catch (Exception e) { e.printStackTrace(); } finally { channelSftp.quit(); channelSftp.exit(); if (channelSftp != null && !channelSftp.isClosed()){ channelSftp.disconnect(); } } return result; } //上传文件 public static int uploadFile(Session session, File sourceFile, String targetDir) { ChannelSftp channelSftp = null; int result = -1; try { Channel channel = session.openChannel("sftp"); channel.connect(); channelSftp = (ChannelSftp) channel; channelSftp.cd(targetDir); TransFileProgressMonitor p = new TransFileProgressMonitor(sourceFile.getName(), sourceFile.length(), true, 120); channelSftp.put(new FileInputStream(sourceFile), sourceFile.getName(), p); while ((!p.isDone() && !p.isTimeOut())) { Thread.sleep(2000); } if(p.isSuccess()){ result=0; } } catch (Exception ex) { ex.printStackTrace(); } finally { channelSftp.quit(); channelSftp.exit(); if (channelSftp != null && !channelSftp.isClosed()){ channelSftp.disconnect(); } } return result; } }
junit测试类:
import com.jcraft.jsch.Session; import java.io.File; /** * @author liangxiaohui * @version 1.0.0 * @ClassName ServerUtilsTest.java * @Description TODO * @createTime 2021年11月05日 14:47:00 */ public class ServerUtilsTest { public static void main(String[] args) { try { ServerAccount server = new ServerAccount(); server.setHost("192.168.2.71"); server.setPort("22"); server.setUserName("root"); server.setPassword("hduap001"); try { Session session = SshConnectionPoolUtil.getConnectionByServerAccount(server); System.out.println(Thread.currentThread().getName() + "session:" + session); File file = new File("E:\\work\\test.txt"); //上传文件测试 // int result = ServerManager.uploadFile(session, file, "/test"); // System.out.println("resukt"+result); // if(0==result){ // System.out.println("upload....success"); // }else{ // System.out.println("upload....failed"); // } //下载文件测试 int result = ServerManager.fetchFile(session, "/test/test.txt", "E:\\work\\"); if (0 == result) { System.out.println("down0....success"); } else { System.out.println("down0....failed"); } int result1 = ServerManager.fetchFile(session, "/logs/spring.log", "E:\\work\\"); if (0 == result1) { System.out.println("down1....success"); } else { System.out.println("down1....failed"); } int result2 = ServerManager.fetchFile(session, "/logs/spring.log.2021-10-29.0.gz", "E:\\work\\"); if (0 == result2) { System.out.println("down2....success"); } else { System.out.println("down2....failed"); } SshConnectionPoolUtil.countConnectionNumForPool(); SshConnectionPoolUtil.returnConnectionToPool(server, session); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } }
测试结果:
D:\workstation\jdk\bin\java.exe -javaagent:D:\idea\idea\lib\idea_rt.jar=55821:D:\idea\idea\bin -Dfile.encoding=UTF-8 -classpath D:\workstation\jdk\jre\lib\charsets.jar;D:\workstation\jdk\jre\lib\deploy.jar;D:\workstation\jdk\jre\lib\ext\access-bridge-64.jar;D:\workstation\jdk\jre\lib\ext\cldrdata.jar;D:\workstation\jdk\jre\lib\ext\dnsns.jar;D:\workstation\jdk\jre\lib\ext\jaccess.jar;D:\workstation\jdk\jre\lib\ext\jfxrt.jar;D:\workstation\jdk\jre\lib\ext\localedata.jar;D:\workstation\jdk\jre\lib\ext\nashorn.jar;D:\workstation\jdk\jre\lib\ext\sunec.jar;D:\workstation\jdk\jre\lib\ext\sunjce_provider.jar;D:\workstation\jdk\jre\lib\ext\sunmscapi.jar;D:\workstation\jdk\jre\lib\ext\sunpkcs11.jar;D:\workstation\jdk\jre\lib\ext\zipfs.jar;D:\workstation\jdk\jre\lib\javaws.jar;D:\workstation\jdk\jre\lib\jce.jar;D:\workstation\jdk\jre\lib\jfr.jar;D:\workstation\jdk\jre\lib\jfxswt.jar;D:\workstation\jdk\jre\lib\jsse.jar;D:\workstation\jdk\jre\lib\management-agent.jar;D:\workstation\jdk\jre\lib\plugin.jar;D:\workstation\jdk\jre\lib\resources.jar;D:\workstation\jdk\jre\lib\rt.jar;D:\hdr-console-new\hdr-data-center-console\hdr-data-center-console-dwd\target\test-classes;D:\hdr-console-new\hdr-data-center-console\hdr-data-center-console-dwd\target\classes;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-data-jpa\2.3.4.RELEASE\spring-boot-starter-data-jpa-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\jakarta\transaction\jakarta.transaction-api\1.3.3\jakarta.transaction-api-1.3.3.jar;D:\workstation\nexus\nexus\nexus\jakarta\persistence\jakarta.persistence-api\2.2.3\jakarta.persistence-api-2.2.3.jar;D:\workstation\nexus\nexus\nexus\org\hibernate\hibernate-core\5.4.21.Final\hibernate-core-5.4.21.Final.jar;D:\workstation\nexus\nexus\nexus\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;D:\workstation\nexus\nexus\nexus\org\javassist\javassist\3.24.0-GA\javassist-3.24.0-GA.jar;D:\workstation\nexus\nexus\nexus\net\bytebuddy\byte-buddy\1.10.14\byte-buddy-1.10.14.jar;D:\workstation\nexus\nexus\nexus\antlr\antlr\2.7.7\antlr-2.7.7.jar;D:\workstation\nexus\nexus\nexus\org\jboss\jandex\2.1.3.Final\jandex-2.1.3.Final.jar;D:\workstation\nexus\nexus\nexus\org\dom4j\dom4j\2.1.3\dom4j-2.1.3.jar;D:\workstation\nexus\nexus\nexus\org\hibernate\common\hibernate-commons-annotations\5.1.0.Final\hibernate-commons-annotations-5.1.0.Final.jar;D:\workstation\nexus\nexus\nexus\org\glassfish\jaxb\jaxb-runtime\2.3.3\jaxb-runtime-2.3.3.jar;D:\workstation\nexus\nexus\nexus\org\glassfish\jaxb\txw2\2.3.3\txw2-2.3.3.jar;D:\workstation\nexus\nexus\nexus\com\sun\istack\istack-commons-runtime\3.0.11\istack-commons-runtime-3.0.11.jar;D:\workstation\nexus\nexus\nexus\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;D:\workstation\nexus\nexus\nexus\org\springframework\data\spring-data-jpa\2.3.4.RELEASE\spring-data-jpa-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\data\spring-data-commons\2.3.4.RELEASE\spring-data-commons-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-orm\5.2.9.RELEASE\spring-orm-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-tx\5.2.9.RELEASE\spring-tx-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-aspects\5.2.9.RELEASE\spring-aspects-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-jdbc\2.3.4.RELEASE\spring-boot-starter-jdbc-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\com\zaxxer\HikariCP\3.4.5\HikariCP-3.4.5.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-jdbc\5.2.9.RELEASE\spring-jdbc-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-aop\2.3.4.RELEASE\spring-boot-starter-aop-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-aop\5.2.9.RELEASE\spring-aop-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\aspectj\aspectjweaver\1.9.6\aspectjweaver-1.9.6.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-context-support\5.2.9.RELEASE\spring-context-support-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-beans\5.2.9.RELEASE\spring-beans-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-context\5.2.9.RELEASE\spring-context-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-expression\5.2.9.RELEASE\spring-expression-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-core\5.2.9.RELEASE\spring-core-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-jcl\5.2.9.RELEASE\spring-jcl-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\quartz-scheduler\quartz\2.3.2\quartz-2.3.2.jar;D:\workstation\nexus\nexus\nexus\com\mchange\mchange-commons-java\0.2.15\mchange-commons-java-0.2.15.jar;D:\workstation\nexus\nexus\nexus\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\workstation\nexus\nexus\nexus\org\quartz-scheduler\quartz-jobs\2.3.2\quartz-jobs-2.3.2.jar;D:\workstation\nexus\nexus\nexus\org\jxls\jxls\2.10.0\jxls-2.10.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-jexl3\3.1\commons-jexl3-3.1.jar;D:\workstation\nexus\nexus\nexus\commons-beanutils\commons-beanutils\1.9.4\commons-beanutils-1.9.4.jar;D:\workstation\nexus\nexus\nexus\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;D:\workstation\nexus\nexus\nexus\org\slf4j\jcl-over-slf4j\1.7.30\jcl-over-slf4j-1.7.30.jar;D:\workstation\nexus\nexus\nexus\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\workstation\nexus\nexus\nexus\org\jxls\jxls-poi\2.10.0\jxls-poi-2.10.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\poi\poi\4.1.2\poi-4.1.2.jar;D:\workstation\nexus\nexus\nexus\commons-codec\commons-codec\1.14\commons-codec-1.14.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar;D:\workstation\nexus\nexus\nexus\com\zaxxer\SparseBitSet\1.2\SparseBitSet-1.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\poi\poi-ooxml\4.1.2\poi-ooxml-4.1.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\poi\poi-ooxml-schemas\4.1.2\poi-ooxml-schemas-4.1.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\xmlbeans\xmlbeans\3.1.0\xmlbeans-3.1.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-compress\1.19\commons-compress-1.19.jar;D:\workstation\nexus\nexus\nexus\com\github\virtuald\curvesapi\1.06\curvesapi-1.06.jar;D:\workstation\nexus\nexus\nexus\org\jxls\jxls-jexcel\1.0.9\jxls-jexcel-1.0.9.jar;D:\workstation\nexus\nexus\nexus\net\sourceforge\jexcelapi\jxl\2.6.10\jxl-2.6.10.jar;D:\workstation\nexus\nexus\nexus\org\jxls\jxls-reader\2.0.6\jxls-reader-2.0.6.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-digester3\3.2\commons-digester3-3.2-with-deps.jar;D:\workstation\nexus\nexus\nexus\cglib\cglib\2.2.2\cglib-2.2.2.jar;D:\workstation\nexus\nexus\nexus\asm\asm\3.3.1\asm-3.3.1.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-jexl\2.1.1\commons-jexl-2.1.1.jar;D:\workstation\nexus\nexus\nexus\com\alibaba\fastjson\1.2.47\fastjson-1.2.47.jar;D:\workstation\nexus\nexus\nexus\com\alibaba\druid\1.1.14\druid-1.1.14.jar;D:\workstation\nexus\nexus\nexus\mysql\mysql-connector-java\5.1.37\mysql-connector-java-5.1.37.jar;D:\workstation\nexus\nexus\nexus\com\microsoft\sqlserver\sqljdbc4\3.0\sqljdbc4-3.0.jar;D:\workstation\nexus\nexus\nexus\com\oracle\ojdbc\6\ojdbc-6.jar;D:\workstation\nexus\nexus\nexus\org\postgresql\postgresql\42.1.4\postgresql-42.1.4.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-pool2\2.3\commons-pool2-2.3.jar;D:\workstation\nexus\nexus\nexus\org\apache\hive\hive-jdbc\1.1.0\hive-jdbc-1.1.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\hive\hive-common\1.1.0\hive-common-1.1.0.jar;D:\workstation\nexus\nexus\nexus\commons-cli\commons-cli\1.2\commons-cli-1.2.jar;D:\workstation\nexus\nexus\nexus\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\workstation\nexus\nexus\nexus\log4j\apache-log4j-extras\1.2.17\apache-log4j-extras-1.2.17.jar;D:\workstation\nexus\nexus\nexus\org\apache\ant\ant\1.9.1\ant-1.9.1.jar;D:\workstation\nexus\nexus\nexus\org\apache\ant\ant-launcher\1.9.1\ant-launcher-1.9.1.jar;D:\workstation\nexus\nexus\nexus\org\apache\hive\hive-service\1.1.0\hive-service-1.1.0.jar;D:\workstation\nexus\nexus\nexus\net\sf\jpam\jpam\1.1\jpam-1.1.jar;D:\workstation\nexus\nexus\nexus\org\apache\thrift\libfb303\0.9.2\libfb303-0.9.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\hive\hive-serde\1.1.0\hive-serde-1.1.0.jar;D:\workstation\nexus\nexus\nexus\com\google\code\findbugs\jsr305\3.0.0\jsr305-3.0.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\avro\avro\1.7.5\avro-1.7.5.jar;D:\workstation\nexus\nexus\nexus\org\codehaus\jackson\jackson-core-asl\1.9.13\jackson-core-asl-1.9.13.jar;D:\workstation\nexus\nexus\nexus\com\thoughtworks\paranamer\paranamer\2.3\paranamer-2.3.jar;D:\workstation\nexus\nexus\nexus\org\xerial\snappy\snappy-java\1.0.5\snappy-java-1.0.5.jar;D:\workstation\nexus\nexus\nexus\net\sf\opencsv\opencsv\2.3\opencsv-2.3.jar;D:\workstation\nexus\nexus\nexus\com\twitter\parquet-hadoop-bundle\1.6.0rc3\parquet-hadoop-bundle-1.6.0rc3.jar;D:\workstation\nexus\nexus\nexus\org\apache\hive\hive-metastore\1.1.0\hive-metastore-1.1.0.jar;D:\workstation\nexus\nexus\nexus\com\jolbox\bonecp\0.8.0.RELEASE\bonecp-0.8.0.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\apache\derby\derby\10.14.2.0\derby-10.14.2.0.jar;D:\workstation\nexus\nexus\nexus\org\datanucleus\datanucleus-api-jdo\3.2.6\datanucleus-api-jdo-3.2.6.jar;D:\workstation\nexus\nexus\nexus\org\datanucleus\datanucleus-core\3.2.10\datanucleus-core-3.2.10.jar;D:\workstation\nexus\nexus\nexus\org\datanucleus\datanucleus-rdbms\3.2.9\datanucleus-rdbms-3.2.9.jar;D:\workstation\nexus\nexus\nexus\commons-pool\commons-pool\1.6\commons-pool-1.6.jar;D:\workstation\nexus\nexus\nexus\commons-dbcp\commons-dbcp\1.4\commons-dbcp-1.4.jar;D:\workstation\nexus\nexus\nexus\javax\jdo\jdo-api\3.0.1\jdo-api-3.0.1.jar;D:\workstation\nexus\nexus\nexus\javax\transaction\jta\1.1\jta-1.1.jar;D:\workstation\nexus\nexus\nexus\org\antlr\antlr-runtime\3.4\antlr-runtime-3.4.jar;D:\workstation\nexus\nexus\nexus\org\antlr\stringtemplate\3.2.1\stringtemplate-3.2.1.jar;D:\workstation\nexus\nexus\nexus\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;D:\workstation\nexus\nexus\nexus\org\apache\httpcomponents\httpclient\4.5.12\httpclient-4.5.12.jar;D:\workstation\nexus\nexus\nexus\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar;D:\workstation\nexus\nexus\nexus\org\apache\thrift\libthrift\0.9.2\libthrift-0.9.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;D:\workstation\nexus\nexus\nexus\jline\jline\0.9.94\jline-0.9.94.jar;D:\workstation\nexus\nexus\nexus\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;D:\workstation\nexus\nexus\nexus\org\apache\curator\curator-framework\2.6.0\curator-framework-2.6.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\curator\curator-client\2.6.0\curator-client-2.6.0.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-swagger-ui\2.7.0\springfox-swagger-ui-2.7.0.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-spring-web\2.7.0\springfox-spring-web-2.7.0.jar;D:\workstation\nexus\nexus\nexus\org\reflections\reflections\0.9.11\reflections-0.9.11.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-swagger2\2.7.0\springfox-swagger2-2.7.0.jar;D:\workstation\nexus\nexus\nexus\io\swagger\swagger-annotations\1.5.13\swagger-annotations-1.5.13.jar;D:\workstation\nexus\nexus\nexus\io\swagger\swagger-models\1.5.13\swagger-models-1.5.13.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\core\jackson-annotations\2.11.2\jackson-annotations-2.11.2.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-spi\2.7.0\springfox-spi-2.7.0.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-core\2.7.0\springfox-core-2.7.0.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-schema\2.7.0\springfox-schema-2.7.0.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-swagger-common\2.7.0\springfox-swagger-common-2.7.0.jar;D:\workstation\nexus\nexus\nexus\com\google\guava\guava\18.0\guava-18.0.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\workstation\nexus\nexus\nexus\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\mapstruct\mapstruct\1.1.0.Final\mapstruct-1.1.0.Final.jar;D:\workstation\nexus\nexus\nexus\com\goodwill\hdr\common-hbase-jar\0.0.5-SNAPSHOT\common-hbase-jar-0.0.5-SNAPSHOT.jar;D:\workstation\nexus\nexus\nexus\org\apache\hbase\hbase-client\1.2.0-cdh5.14.2\hbase-client-1.2.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\hbase\hbase-annotations\1.2.0-cdh5.14.2\hbase-annotations-1.2.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\hbase\hbase-common\1.2.0-cdh5.14.2\hbase-common-1.2.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\hadoop\hadoop-core\2.6.0-mr1-cdh5.14.2\hadoop-core-2.6.0-mr1-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\hsqldb\hsqldb\1.8.0.10\hsqldb-1.8.0.10.jar;D:\workstation\nexus\nexus\nexus\org\apache\hbase\hbase-protocol\1.2.0-cdh5.14.2\hbase-protocol-1.2.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\commons-io\commons-io\2.4\commons-io-2.4.jar;D:\workstation\nexus\nexus\nexus\com\google\protobuf\protobuf-java\2.5.0\protobuf-java-2.5.0.jar;D:\workstation\nexus\nexus\nexus\io\netty\netty-all\4.1.52.Final\netty-all-4.1.52.Final.jar;D:\workstation\nexus\nexus\nexus\org\apache\htrace\htrace-core\3.2.0-incubating\htrace-core-3.2.0-incubating.jar;D:\workstation\nexus\nexus\nexus\org\codehaus\jackson\jackson-mapper-asl\1.8.8\jackson-mapper-asl-1.8.8.jar;D:\workstation\nexus\nexus\nexus\org\jruby\jcodings\jcodings\1.0.8\jcodings-1.0.8.jar;D:\workstation\nexus\nexus\nexus\org\jruby\joni\joni\2.1.2\joni-2.1.2.jar;D:\workstation\nexus\nexus\nexus\com\yammer\metrics\metrics-core\2.2.0\metrics-core-2.2.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\hadoop\hadoop-common\2.6.0-cdh5.14.2\hadoop-common-2.6.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\xmlenc\xmlenc\0.52\xmlenc-0.52.jar;D:\workstation\nexus\nexus\nexus\commons-httpclient\commons-httpclient\3.1\commons-httpclient-3.1.jar;D:\workstation\nexus\nexus\nexus\commons-net\commons-net\3.1\commons-net-3.1.jar;D:\workstation\nexus\nexus\nexus\com\sun\jersey\jersey-core\1.9\jersey-core-1.9.jar;D:\workstation\nexus\nexus\nexus\com\sun\jersey\jersey-json\1.9\jersey-json-1.9.jar;D:\workstation\nexus\nexus\nexus\org\codehaus\jettison\jettison\1.1\jettison-1.1.jar;D:\workstation\nexus\nexus\nexus\com\sun\xml\bind\jaxb-impl\2.2.3-1\jaxb-impl-2.2.3-1.jar;D:\workstation\nexus\nexus\nexus\javax\xml\bind\jaxb-api\2.3.1\jaxb-api-2.3.1.jar;D:\workstation\nexus\nexus\nexus\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;D:\workstation\nexus\nexus\nexus\org\codehaus\jackson\jackson-jaxrs\1.8.3\jackson-jaxrs-1.8.3.jar;D:\workstation\nexus\nexus\nexus\org\codehaus\jackson\jackson-xc\1.8.3\jackson-xc-1.8.3.jar;D:\workstation\nexus\nexus\nexus\commons-el\commons-el\1.0\commons-el-1.0.jar;D:\workstation\nexus\nexus\nexus\net\java\dev\jets3t\jets3t\0.9.0\jets3t-0.9.0.jar;D:\workstation\nexus\nexus\nexus\com\jamesmurty\utils\java-xmlbuilder\0.4\java-xmlbuilder-0.4.jar;D:\workstation\nexus\nexus\nexus\commons-configuration\commons-configuration\1.6\commons-configuration-1.6.jar;D:\workstation\nexus\nexus\nexus\commons-digester\commons-digester\1.8\commons-digester-1.8.jar;D:\workstation\nexus\nexus\nexus\commons-beanutils\commons-beanutils-core\1.8.0\commons-beanutils-core-1.8.0.jar;D:\workstation\nexus\nexus\nexus\com\google\code\gson\gson\2.8.6\gson-2.8.6.jar;D:\workstation\nexus\nexus\nexus\org\apache\curator\curator-recipes\2.7.1\curator-recipes-2.7.1.jar;D:\workstation\nexus\nexus\nexus\org\apache\htrace\htrace-core4\4.0.1-incubating\htrace-core4-4.0.1-incubating.jar;D:\workstation\nexus\nexus\nexus\org\apache\hadoop\hadoop-annotations\2.6.0-cdh5.14.2\hadoop-annotations-2.6.0-cdh5.14.2.jar;D:\workstation\jdk\lib\tools.jar;D:\workstation\nexus\nexus\nexus\org\apache\hadoop\hadoop-auth\2.6.0-cdh5.14.2\hadoop-auth-2.6.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\directory\server\apacheds-kerberos-codec\2.0.0-M15\apacheds-kerberos-codec-2.0.0-M15.jar;D:\workstation\nexus\nexus\nexus\org\apache\directory\server\apacheds-i18n\2.0.0-M15\apacheds-i18n-2.0.0-M15.jar;D:\workstation\nexus\nexus\nexus\org\apache\directory\api\api-asn1-api\1.0.0-M20\api-asn1-api-1.0.0-M20.jar;D:\workstation\nexus\nexus\nexus\org\apache\directory\api\api-util\1.0.0-M20\api-util-1.0.0-M20.jar;D:\workstation\nexus\nexus\nexus\com\github\stephenc\findbugs\findbugs-annotations\1.3.9-1\findbugs-annotations-1.3.9-1.jar;D:\workstation\nexus\nexus\nexus\junit\junit\4.13\junit-4.13.jar;D:\workstation\nexus\nexus\nexus\org\hamcrest\hamcrest-core\2.2\hamcrest-core-2.2.jar;D:\workstation\nexus\nexus\nexus\com\github\jsqlparser\jsqlparser\4.0\jsqlparser-4.0.jar;D:\workstation\nexus\nexus\nexus\ch\ethz\ganymed\ganymed-ssh2\build210\ganymed-ssh2-build210.jar;D:\workstation\nexus\nexus\nexus\com\jcraft\jsch\0.1.54\jsch-0.1.54.jar;D:\workstation\nexus\nexus\nexus\org\jenkins-ci\trilead-ssh2\build-217-jenkins-11\trilead-ssh2-build-217-jenkins-11.jar;D:\workstation\nexus\nexus\nexus\net\i2p\crypto\eddsa\0.2.0\eddsa-0.2.0.jar;D:\workstation\nexus\nexus\nexus\org\connectbot\jbcrypt\jbcrypt\1.0.0\jbcrypt-1.0.0.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-spring-boot-starter\2.0.8\knife4j-spring-boot-starter-2.0.8.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-spring-boot-autoconfigure\2.0.8\knife4j-spring-boot-autoconfigure-2.0.8.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-spring\2.0.8\knife4j-spring-2.0.8.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-annotations\2.0.8\knife4j-annotations-2.0.8.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-core\2.0.8\knife4j-core-2.0.8.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-bean-validators\2.10.5\springfox-bean-validators-2.10.5.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-spring-webmvc\2.10.5\springfox-spring-webmvc-2.10.5.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-spring-ui\2.0.8\knife4j-spring-ui-2.0.8.jar;D:\workstation\nexus\nexus\nexus\com\goodwill\hdr\hdr-common-web\0.5.22-SNAPSHOT\hdr-common-web-0.5.22-SNAPSHOT.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\mybatis-plus-boot-starter\3.4.0\mybatis-plus-boot-starter-3.4.0.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\mybatis-plus\3.4.0\mybatis-plus-3.4.0.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\mybatis-plus-extension\3.4.0\mybatis-plus-extension-3.4.0.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\mybatis-plus-core\3.4.0\mybatis-plus-core-3.4.0.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\mybatis-plus-annotation\3.4.0\mybatis-plus-annotation-3.4.0.jar;D:\workstation\nexus\nexus\nexus\org\mybatis\mybatis\3.5.5\mybatis-3.5.5.jar;D:\workstation\nexus\nexus\nexus\org\mybatis\mybatis-spring\2.0.5\mybatis-spring-2.0.5.jar;D:\workstation\nexus\nexus\nexus\com\goodwill\hdr\hdr-common-security\0.5.22-SNAPSHOT\hdr-common-security-0.5.22-SNAPSHOT.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-security\2.3.4.RELEASE\spring-boot-starter-security-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\security\spring-security-config\5.3.4.RELEASE\spring-security-config-5.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\security\spring-security-web\5.3.4.RELEASE\spring-security-web-5.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\security\oauth\spring-security-oauth2\2.3.3.RELEASE\spring-security-oauth2-2.3.3.RELEASE.jar;D:\workstation\nexus\nexus\nexus\cn\hutool\hutool-all\5.6.3\hutool-all-5.6.3.jar;D:\workstation\nexus\nexus\nexus\com\goodwill\hdr\hdr-common-core\0.5.22-SNAPSHOT\hdr-common-core-0.5.22-SNAPSHOT.jar;D:\workstation\nexus\nexus\nexus\org\springframework\security\spring-security-core\5.3.4.RELEASE\spring-security-core-5.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\security\spring-security-jwt\1.0.7.RELEASE\spring-security-jwt-1.0.7.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\bouncycastle\bcpkix-jdk15on\1.55\bcpkix-jdk15on-1.55.jar;D:\workstation\nexus\nexus\nexus\org\bouncycastle\bcprov-jdk15on\1.55\bcprov-jdk15on-1.55.jar;D:\workstation\nexus\nexus\nexus\io\jsonwebtoken\jjwt\0.9.0\jjwt-0.9.0.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\core\jackson-databind\2.11.2\jackson-databind-2.11.2.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\core\jackson-core\2.11.2\jackson-core-2.11.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-data-redis\2.3.4.RELEASE\spring-boot-starter-data-redis-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\data\spring-data-redis\2.3.4.RELEASE\spring-data-redis-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\data\spring-data-keyvalue\2.3.4.RELEASE\spring-data-keyvalue-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-oxm\5.2.9.RELEASE\spring-oxm-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\redis\clients\jedis\3.3.0\jedis-3.3.0.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\dynamic-datasource-spring-boot-starter\3.3.2\dynamic-datasource-spring-boot-starter-3.3.2.jar;D:\workstation\nexus\nexus\nexus\com\goodwill\hdr\common-util\0.0.12-SNAPSHOT\common-util-0.0.12-SNAPSHOT.jar;D:\workstation\nexus\nexus\nexus\net\sf\json-lib\json-lib\2.4\json-lib-2.4-jdk15.jar;D:\workstation\nexus\nexus\nexus\net\sf\ezmorph\ezmorph\1.0.6\ezmorph-1.0.6.jar;D:\workstation\nexus\nexus\nexus\com\belerweb\pinyin4j\2.5.0\pinyin4j-2.5.0.jar;D:\workstation\nexus\nexus\nexus\log4j\log4j\1.2.16\log4j-1.2.16.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter\2.3.4.RELEASE\spring-boot-starter-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot\2.3.4.RELEASE\spring-boot-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-autoconfigure\2.3.4.RELEASE\spring-boot-autoconfigure-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-logging\2.3.4.RELEASE\spring-boot-starter-logging-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\workstation\nexus\nexus\nexus\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;D:\workstation\nexus\nexus\nexus\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;D:\workstation\nexus\nexus\nexus\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\workstation\nexus\nexus\nexus\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\workstation\nexus\nexus\nexus\org\yaml\snakeyaml\1.26\snakeyaml-1.26.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-web\2.3.4.RELEASE\spring-boot-starter-web-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-json\2.3.4.RELEASE\spring-boot-starter-json-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.2\jackson-datatype-jdk8-2.11.2.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.2\jackson-datatype-jsr310-2.11.2.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.2\jackson-module-parameter-names-2.11.2.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-tomcat\2.3.4.RELEASE\spring-boot-starter-tomcat-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\apache\tomcat\embed\tomcat-embed-core\9.0.38\tomcat-embed-core-9.0.38.jar;D:\workstation\nexus\nexus\nexus\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;D:\workstation\nexus\nexus\nexus\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.38\tomcat-embed-websocket-9.0.38.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-web\5.2.9.RELEASE\spring-web-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-webmvc\5.2.9.RELEASE\spring-webmvc-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-test\2.3.4.RELEASE\spring-boot-starter-test-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-test\2.3.4.RELEASE\spring-boot-test-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-test-autoconfigure\2.3.4.RELEASE\spring-boot-test-autoconfigure-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;D:\workstation\nexus\nexus\nexus\net\minidev\json-smart\2.3\json-smart-2.3.jar;D:\workstation\nexus\nexus\nexus\net\minidev\accessors-smart\1.2\accessors-smart-1.2.jar;D:\workstation\nexus\nexus\nexus\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;D:\workstation\nexus\nexus\nexus\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;D:\workstation\nexus\nexus\nexus\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;D:\workstation\nexus\nexus\nexus\org\assertj\assertj-core\3.16.1\assertj-core-3.16.1.jar;D:\workstation\nexus\nexus\nexus\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;D:\workstation\nexus\nexus\nexus\org\junit\jupiter\junit-jupiter\5.6.2\junit-jupiter-5.6.2.jar;D:\workstation\nexus\nexus\nexus\org\junit\jupiter\junit-jupiter-api\5.6.2\junit-jupiter-api-5.6.2.jar;D:\workstation\nexus\nexus\nexus\org\apiguardian\apiguardian-api\1.1.0\apiguardian-api-1.1.0.jar;D:\workstation\nexus\nexus\nexus\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;D:\workstation\nexus\nexus\nexus\org\junit\platform\junit-platform-commons\1.6.2\junit-platform-commons-1.6.2.jar;D:\workstation\nexus\nexus\nexus\org\junit\jupiter\junit-jupiter-params\5.6.2\junit-jupiter-params-5.6.2.jar;D:\workstation\nexus\nexus\nexus\org\junit\jupiter\junit-jupiter-engine\5.6.2\junit-jupiter-engine-5.6.2.jar;D:\workstation\nexus\nexus\nexus\org\junit\platform\junit-platform-engine\1.6.2\junit-platform-engine-1.6.2.jar;D:\workstation\nexus\nexus\nexus\org\mockito\mockito-core\3.3.3\mockito-core-3.3.3.jar;D:\workstation\nexus\nexus\nexus\net\bytebuddy\byte-buddy-agent\1.10.14\byte-buddy-agent-1.10.14.jar;D:\workstation\nexus\nexus\nexus\org\objenesis\objenesis\2.6\objenesis-2.6.jar;D:\workstation\nexus\nexus\nexus\org\mockito\mockito-junit-jupiter\3.3.3\mockito-junit-jupiter-3.3.3.jar;D:\workstation\nexus\nexus\nexus\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;D:\workstation\nexus\nexus\nexus\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-test\5.2.9.RELEASE\spring-test-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\xmlunit\xmlunit-core\2.7.0\xmlunit-core-2.7.0.jar ServerUtilsTest 21/11/05 18:06:40 INFO ssh.SshConnectionPoolUtil$SshConnectionPoolFactory: ssh连接池正在创建新的session连接实例...com.goodwill.hdr.dwd.util.connection.ssh.ServerAccount@5f6f9780:com.jcraft.jsch.Session@71a794e5 21/11/05 18:06:40 INFO ssh.SshConnectionPoolUtil$SshConnectionPoolFactory: ssh连接池:正在获取session连接实例...com.goodwill.hdr.dwd.util.connection.ssh.ServerAccount@5f6f9780:com.jcraft.jsch.Session@71a794e5 mainsession:com.jcraft.jsch.Session@71a794e5 Transferring begin. Trans source:/test/test.txt Trans dest:E:\work\test.txt Trans total size:628 /test/test.txt>> 进度条:[####################################################################################################] 100% (628/628) Transferring done. > saved to:E:\work\test.txt down0....success Transferring begin. Trans source:/logs/spring.log Trans dest:E:\work\spring.log Trans total size:3685476 /logs/spring.log>> 进度条:[####################################################################################################] 100% (3685476/3685476) Transferring done. > saved to:E:\work\spring.log down1....success Transferring begin. Trans source:/logs/spring.log.2021-10-29.0.gz Trans dest:E:\work\spring.log.2021-10-29.0.gz Trans total size:10547 /logs/spring.log.2021-10-29.0.gz>> 进度条:[####################################################################################################] 100% (10547/10547) Transferring done. > saved to:E:\work\spring.log.2021-10-29.0.gz down2....success 21/11/05 18:06:41 INFO ssh.SshConnectionPoolUtil: 对象池当前激活实例总数量111>>>>:1 21/11/05 18:06:41 INFO ssh.SshConnectionPoolUtil: 对象池当前空闲实例总数量111>>>>:0 21/11/05 18:06:41 INFO ssh.SshConnectionPoolUtil$SshConnectionPoolFactory: ssh连接池:正在归还session连接实例...com.goodwill.hdr.dwd.util.connection.ssh.ServerAccount@5f6f9780:com.jcraft.jsch.Session@71a794e5 21/11/05 18:06:41 INFO ssh.SshConnectionPoolUtil$SshConnectionPoolFactory: ssh连接池中session连接实例正在被销毁...com.goodwill.hdr.dwd.util.connection.ssh.ServerAccount@5f6f9780:com.jcraft.jsch.Session@71a794e5 Process finished with exit code 0
转自:
https://www.cnblogs.com/yebanfengqi/p/15514620.html