oracle - WSO2 Identity Server - 自定义 JDBC 用户存储管理器 - JDBC 池

标签 oracle jdbc wso2 connection-pooling wso2-identity-server

WSO2 Identity Server 5.0.0(和一些补丁;))

自定义 JDBC 用户存储管理器(JDBCUserStoreManager 的子级)似乎没有使用 JDBC 池。我注意到我可能会出现 session 关闭错误和 sql 异常,而 Identity Server 本身仍然可以通过其单独的数据库连接(配置的池)正常运行。

所以我想我对此有两个问题:

  1. 在链的上游某个地方,是否有用于 JDBCUserStoreManager 的 JDBC 池?如果是这样,有没有办法更强大地配置那个人?
  2. 我可以在 master-datasources.xml 中创建我的自定义 JDBC 用户存储管理可以引用的另一个 JDBC 数据源吗?

最佳答案

您可以导入 Carbon 数据源并使用它们,而不是使用自己的数据源/连接(它们带有内置池,无需担心任何配置等)。您可以通过直接调用 ndatasource 组件以编程方式访问它们,也可以通过 JNDI 访问它们。

直接从 ndatasource 组件访问它们:
依赖关系:

<dependency>
  <groupId>org.wso2.carbon</groupId>
  <artifactId>org.wso2.carbon.ndatasource.core</artifactId>
  <version>add_correct_version_here</version>
</dependency>

(您可以检查存储库/组件/插件以找出上述依赖项的正确版本)
您可以像 this code 中那样注入(inject) DataSourceService (@scr.reference标签指的是您需要注入(inject)的服务,这在构建 bundle 时使用maven scr插件来解析这些依赖项)。

请注意,当您遵循此方法时,您必须将 jar 构建为 OSGi 包,因为它使用声明性服务(并且必须将其放置在存储库/组件/dropins 中)。否则,依赖项将不会在运行时注入(inject)。

接下来,您可以访问所有数据源:

List<CarbonDataSource> dataSources = dataSourceService.getAllDataSources();

关于oracle - WSO2 Identity Server - 自定义 JDBC 用户存储管理器 - JDBC 池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33398071/

相关文章:

错误的 SQL 组 - "not a GROUP BY expression"

sql - Oracle Merge 语句中的序列行为

mysql - 将复选框的未选中值插入数据库

java - Oracle SQL - 在通过 JDBC 调用的查询上重用绑定(bind)变量

oracle - 是否有工具可以检查远程计算机上 Oracle 11g 数据库的可用性?

mysql - 如何在不使用 group by 的情况下为此 sql 查询获得相同的结果?

postgresql - Clojure jdbc 创建复合主键

wso2 - 配置 WSO2 STATS_DB

alfresco - wso2 产品和露天集成

mysql - 用户登录身份验证失败 - WSO2 身份服务器