我正在使用HikariDataSource连接到MariaDB数据库。以下类返回一个Connection
。
public class DataSource {
private HikariDataSource ds;
// The constructor takes db name as an argument and creates a new datasource for the connection accordingly.
public DataSource(String dbString) {
HikariConfig config = new HikariConfig();
Map map = DbConfigParser.configKeyValue(dbString);
config.setJdbcUrl(String.valueOf(map.get("uri")));
config.setUsername(String.valueOf(map.get("uname")));
config.setPassword(String.valueOf(map.get("pwd")));
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
ds = new HikariDataSource(config);
}
// Returns a Connection to the database
public Connection getConnection() throws SQLException {
return ds.getConnection();
}
// Close the datasource
public void close(){
if (ds != null) {
ds.close();
}
}
}
这是执行select查询的方法。该类还包含一个close方法
public List<DataFile> getAllFiles() throws SQLException {
try (Connection connection = dataSource.getConnection();
DSLContext ctx = DSL.using(connection, SQLDialect.MARIADB)) {
List<DataFile> dataFileList = new DataFileQueries().selectQuery(ctx)
.fetchInto(DataFile.class);
if (dataFileList == null || dataFileList.isEmpty()) {
throw new IllegalStateException("The List is Empty!");
}
return dataFileList;
}
}
public void close() {
try {
dataSource.close();
} catch (Exception e) {
LOG.error("A SQLException was caught", e);
}
}
try with块自动关闭连接
对象,但如何关闭连接池?例如,我应该在数据库操作之后调用close方法吗
public static void main(String[] args) throws SQLException {
DataFileDaoImpl service = new DataFileDaoImpl("testi");
List<DataFile> list = service.getAllFiles();
list.stream().forEach(
e -> System.out.println(e.toString())
);
service.close();
}
当我不调用off()
方法时,我看不到任何关于关机启动的控制台输出。这是关闭HikariDataSource
和连接池的正确方法吗?
对于每个连接,您不需要调用DataSource的关闭():
关闭数据源及其关联池。
它仅为应用程序终止定义:
在应用程序终止时,关闭()是必不可少的
您应该继续使用池,注意您正在(正确地)关闭与try with resources的连接
try (Connection connection = dataSource.getConnection()
我正在尝试使用Springboot反应式webclient进行HTTP调用。远程服务器错误导致连接关闭。 请查找以下使用Webclient进行rest调用的代码。 Webclient创建的代码: 第一次通话后,我收到以下日志: 当我在一段时间后(比如10分钟)拨打电话时,连接将变为非活动状态。我正在获取以下日志: 我发现连接没有正确返回到池。配置中是否缺少任何内容?我是否已正确关闭连接?我想这应该
我的连接器类: 连接器。JAVA 这是我的DAO类(简化):UserDAO. java 在这里,我发现了关于Hikari的一些事实的问题: 您必须在HikariCP为您提供的连接实例上调用关闭() 可能是我的不起作用,因为它只是Hikari在方法中提供给我的连接的副本。
我使用来管理服务器端的套接字连接。如果服务器(tomcat)关闭,我如何确保任何活动的套接字连接被正确终止? 有好心的听众吗?或任何可以防止服务器关闭的拦截器,例如,如果在关闭期间有任何打开的套接字,则最多60秒;但同时关闭套接字,在关机期间不接受任何连接?
问题内容: 关闭。 这个问题不能重现或由错别字引起。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 我正在使用C#,并且试图连接到由00webhost托管的MySQL数据库。 我在网上遇到错误: 没有使用此参数的mysql主机。 我检查了,一切似乎都很好。 此连接字符串有什么问题? 问题答案: 尝试以这种方式创建连接字符串:
我目前有一个简单的即时消息程序,它利用Java的Socket和ServerSocket类。它按预期运行,但当我尝试关闭连接时,它没有使用4路握手TCP断开来关闭连接。相反,它使用RST数据包突然关闭连接。 关闭连接的方法是从客户端向服务器发送一个字符串,服务器将把它识别为关闭连接的命令。然后,我在服务器上使用方法,在客户端上使用方法。 使用这些类正确关闭TCP连接的正确方式和/或事件顺序是什么?
问题内容: 我有全部传播异常的方法,然后在一个地方处理,但是我意识到了一些事情。 假设我有这样的方法 我的问题是,如果doSometing()方法引发异常,该语句将不会关闭,但我不想在那里处理异常。尝试并捕获只会抛出异常并最终关闭语句的正确方法吗? 问题答案: