gpt4 book ai didi

java - 连接池 MySQL 连接与 SSH(JSch)

转载 作者:行者123 更新时间:2023-11-29 07:35:12 30 4
gpt4 key购买 nike

我正在为大学开发一个连接到 MySQL 数据库的 java 项目。我已经建立了我的连接,没有问题,Jsch 负责 SSH 部分。现在,当我将数据插入数据库时​​,速度非常慢,因为它每次都会重新打开连接。

我的问题是解决速度问题的最佳(最简单)方法是什么?我一直在阅读有关连接池的内容,但所有答案都不一样,而且我不确定如何将它们中的任何一个应用到我自己的代码中。我是否需要创建两个池,一个用于 SSH 连接,一个用于 MySQL 连接?

这是我的代码的连接部分,感谢任何帮助。

int lport=5656;
String rhost="REDACTED";
String host="REDACTED"; //
int rport=3306;
String user="REDACTED";
String password="REDACTED";
String dbuserName = "REDACTED";
String dbpassword = "REDACTED";
String url = "jdbc:mysql://localhost:"+lport+"/db";
String driverName="com.mysql.jdbc.Driver";
Connection conn = null;
Session session= null;
Statement stmt = null;

public void init() throws SQLException {
try{
//Set StrictHostKeyChecking property to no to avoid UnknownHostKey issue
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
session=jsch.getSession(user, host, 21098);
session.setPassword(password);
session.setConfig(config);
session.connect();
System.out.println("Connected");
int assinged_port=session.setPortForwardingL(lport, rhost, rport);
System.out.println("localhost:"+assinged_port+" -> "+rhost+":"+rport);
System.out.println("Port Forwarded");

//mysql database connectivity
Class.forName(driverName).newInstance();
conn = DriverManager.getConnection (url, dbuserName, dbpassword);
System.out.println ("Database connection established");
System.out.println("DONE");

最佳答案

为避免重新连接数据库,您可以使用 apache commons 库,它具有 DBCP 包,可让您创建池,您可以查看示例代码:

import java.sql.Connection;

import org.apache.commons.dbcp.BasicDataSource;

public class DBConnectionPool() throws SQLException {

public void init() throws SQLException {
try {


//Set StrictHostKeyChecking property to no to avoid UnknownHostKey issue
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
session = jsch.getSession(user, host, 21098);
session.setPassword(password);
session.setConfig(config);
session.connect();
System.out.println("Connected");
int assinged_port = session.setPortForwardingL(lport, rhost, rport);
System.out.println("localhost:" + assinged_port + " -> " + rhost + ":" + rport);
System.out.println("Port Forwarded");

BasicDataSource basicDataSource = new BasicDataSource();

basicDataSource.setDriverClassName(driverName);
basicDataSource.setUrl(url);
basicDataSource.setUsername(dbuserName);
basicDataSource.setPassword(dbpassword);

basicDataSource.setMaxActive(10);
basicDataSource.setMaxIdle(5);
basicDataSource.setMaxWait(100 * 4);
Connection conn = basicDataSource.getConnection()

}
}

关于java - 连接池 MySQL 连接与 SSH(JSch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49243259/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com