当前位置: 首页 > 面试题库 >

spring / tomcat-jdbc池-新的连接侦听器

羊浩广
2023-03-14
问题内容

tomcat-jdbc在默认spring- boot设置中使用池。我想每次在池中建立新的JDBC连接时以及在首次使用它之前都运行一些自定义Java代码。如何做到?如果有几种可能性,哪一种是最好的?


问题答案:

好吧,我可以想到两个选择:

  1. 创建您自己的包装器类(通过扩展Tomcat的DataSource类或通过实现Java的DataSource接口并委派给被包装的类DataSource),然后将所需的逻辑添加到所需的方法,并@Configuration通过手动实例化您的类来注册Bean tomcat-jdbc DataSource(例如有关如何这样做,请参阅DataSourceConfiguration.Tomcat类),并将其包装在您的类中。

  2. 创建一个方面并使用Spring的AOP支持来拦截对的调用getConnection。由于DataSource类位于javax包中,因此我认为您必须使用AspectJ,有关某些示例,请参考此链接。

我的建议是选择第一个选项,这样可以减少麻烦,这是一个如何定义包装bean的小例子:

@Bean
public DataSource dataSource(DataSourceProperties properties) {
    return new MyDataSourceWrapper(tomcatDataSourceFrom(properties));
}

private org.apache.tomcat.jdbc.pool.DataSource tomcatDataSourceFrom(
    DataSourceProperties properties) {
    // manual instantiation like in DataSourceConfiguration.Tomcat class
}


 类似资料:
  • 我收到以下错误消息 JAVAsql。SQLException:Listener拒绝了连接,出现以下错误:ORA-12505,TNS:Listener当前不知道连接描述符中给出的SID 原因:甲骨文。网纳什。NetException:侦听器拒绝连接,出现以下错误:ORA-12505,TNS:侦听器当前不知道连接描述符中给出的SID 请帮我这个...

  • 我们有一个spring-boot应用程序,它使用嵌入式tomcat进行部署,并使用MySQL后端的默认tomcat-jdbc连接池,而没有为MySQL或tomcat端定制。 该应用程序有一些调度程序,它们主要在一天中的特定时间运行,即在昨天的最后一次cron运行和今天的第一次cron运行之间,有超过9个小时的间隙。然而,无论何时cron在早期运行,它都从未遇到过空闲连接问题。 现在我们看到一条错误

  • 我将在应用程序中使用tomcat-jdbc连接池。有两种方法可以添加它: 谢了。

  • 我们刚刚从dbcp迁移到tomcat jdbc连池。我们在加载中尝试了系统,收到了以下异常: 请注意: 不忙的连接在哪里?忙的数字在这之后一直在下降,但我们仍然没有得到任何连接。 有什么想法吗? 配置: env:ubuntu和tomcat 6. db-mysql

  • Tomcat JDBC连接池提供了几个测试连接的选项。我觉得更有趣的两个是和。 首先,我认为是最好的选择,因为它基本上是在将连接提供给应用程序之前验证连接(最大频率由定义)。 但是过了一会儿,我意识到在使用连接之前测试它可能会影响应用程序的响应性。因此,我认为使用可以更有效,因为它在不使用连接时测试连接。 另一方面,我很惊讶不适用于,而且我并不真正理解的用途。

  • 我们如何使用tomcat jdbc为同一个数据库配置两个不同的模式。我们是否需要为不同的模式创建两个不同配置的tomcat jdbc池连接,或者是否可以配置一个jdbc连接池,然后使用该连接池连接到两个不同的模式。

  • null 任何想法都将受到赞赏。

  • 关于这个设置,我有几个问题: > 我的应用程序(Spring/Hibernate)每个用户有一个不同的数据库。所以这里的问题是数据源(使用spring和hibernate来实现持久性)是在Tomcat级别创建的。因此,无论我做什么连接池都是在服务器级别。 根据集群配置,Tomcat实例将创建它们自己的连接池。