我正在开发一个连接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");
答案 0 :(得分:1)
为避免重新连接数据库,可以使用apache commons库,它有DBCP包,可以让你创建池,你可以查看这个示例代码:
@EnableOAuth2Sso
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
@Qualifier("customUserDetailsService")
private UserDetailsService userDetailsService;
@Override
public void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/**")
.authorizeRequests()
.antMatchers("/", "/login**")
.permitAll()
.anyRequest()
.authenticated();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
}