java - HTTP 线程池和 JNDI 数据源连接池

标签 java spring jdbc jboss wildfly

我正在寻找一些最佳实践和建议,了解如何在 jboss/wildfly 中配置线程池以与 JNDI 数据源的连接池大小进行比较来处理 http 请求。

虽然服务器上运行着其他 Web 应用程序,但新的 Web 服务应用程序使用 Spring security 进行身份验证,它通过 JNDI 检索的 JDBC 数据源调用我的数据库。如果在身份验证时抛出异常,Spring security 会将其解释为身份验证失败并返回 401,这是有道理的。

我们将限制实现为自定义 Spring 安全过滤器,它在逐个用户、逐个端点的基础上工作,并且需要在应用之前进行身份验证查找。

当使用 jmeter 锤击服务来测试限制时,我开始看到 401 响应返回,因为没有更多可用的 JDBC 连接。本质上,jboss/wildfly 有足够的 HTTP 线程来处理请求,但没有足够的 JDBC 连接来匹配。

我不愿意增加数据源连接池以匹配 HTTP 线程池,因为这看起来很愚蠢。我想知道是否有关于这个问题的最佳实践。目前我正在考虑在 Spring 安全异常处理中添加一些额外的内容来检查抛出的异常,如果没有 JDBC 连接则返回 503。

最佳答案

理想情况下,您的http线程将等待数据库连接池返回连接对象,因此检查等待时间可能非常小。

关于java - HTTP 线程池和 JNDI 数据源连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29625150/

相关文章:

java - 正则表达式截断尾随零

java - Spring boot JPA不使用findById返回现有结果

java - Google PubSub 重新发送的消息未得到处理

java - 从 Spring jdbcTemplate 中的 RowMapper 获取预定义大小的列表

java - JDBC iso-8859-1 编码

java - 在 src 文件夹之外创建一个文件夹

java - 在 Spring Boot 中启动应用程序上下文时出错

java - Spring security 阻止从后台线程导航到另一个 View

java - WSJDBCConnection 不包装 Oracle jdbc Connection 类型的对象

java - 基于 Web 的应用程序的 JDBC 插入语句中的同步