不用修改数据库创建链接超时配置
public static Connection getConn(DatasourcesDto datasource){
CodeGenUtils codeGen =new CodeGenUtils()
// 获取链接超时处理
ExecutorService executor = Executors.newFixedThreadPool(1)
Connection conn = null
try {
SimpleTimeLimiter stl = SimpleTimeLimiter.create(executor)
conn = stl.callUninterruptiblyWithTimeout(new Callable<Connection>() {
@Override
public Connection call() throws Exception {
return codeGen.getDataSourceConfig(datasource).getConn()
}
}, 500, TimeUnit.MILLISECONDS)
} catch (Exception e) {
Assert.isTrue(DataValiEnum.DB_CONNECT_TIMEOUT, false)
} finally {
executor.shutdown()
}
return conn
}
private DataSourceConfig getDataSourceConfig(DatasourcesDto datasource) {
DataSourceConfig dsc = new DataSourceConfig()
String url = null
String driverName = null
if(datasource.getDbType() == 1){ // mysql
driverName = "com.mysql.cj.jdbc.Driver"
url = String.format("jdbc:mysql://%s:%d/%s?useUnicode=true&characterEncoding=UTF-8&connectTimeout=500", datasource.getDbHost(),datasource.getPort(),datasource.getDbCode())
} else if (datasource.getDbType() == 2){ // oracle
driverName = "oracle.jdbc.driver.OracleDriver"
url = String.format("jdbc:oracle:thin:@%s:%d/%s", datasource.getDbHost(),datasource.getPort(),datasource.getDbCode())
}
dsc.setUrl(url)
dsc.setDriverName(driverName)
dsc.setUsername(datasource.getUsername())
dsc.setPassword(datasource.getPassword())
return dsc
}