如何在JBoss中以编程方式获取连接池大小?

时间:2016-06-15 11:29:54

标签: java jboss datasource connection-pooling wildfly-9

有没有办法确定数据库连接池大小。我想找出最小池大小,最大池大小。

原因如下:

  1. 我的应用程序在Wildfly-9.0.1.Final上运行。
  2. 我在-ds.xml文件中配置了数据源。
  3. 我有很多客户端,每个客户端都有-ds.xml文件。
  4. 在每个文件中,我指定了max-pool-size = 30.
  5. 但对于某些客户端来说,这个大小(30)恰好很小,因为越来越多的用户试图同时从池中获取连接。然后在这种情况下,我需要将max-pool-size增加到更高的数字。我想要这样的东西将帮助我获取这些参数,然后基于我将执行一些逻辑。就像池大小达到25/30一样,它会触发电子邮件作为警报,以便开发人员可以增加其池大小。通过这种方式,避免客户端在收到所有问题时无法获得连接时会遇到的问题。

    有没有办法以编程方式访问这些连接池参数。

1 个答案:

答案 0 :(得分:0)

有多种方法。如果您的数据源将在standalone.xml中配置,您可以轻松实现目标

通过CLI命令(如果您不熟悉CLI,请查看here

/subsystem=datasources/data-source=ExampleDS/statistics=pool:read-resource(include-runtime=true)

通过JMX 通过阅读以下MBean

jboss.as:subsystem=datasources,data-source=ExampleDS,statistics=pool

注意:在这两种情况下,必须用实际的数据源名称替换ExampleDS。

<强>更新

如果直接将-ds.xml放入deployments目录,则可以读取如下统计信息:

/deployment=my-ds.xml/subsystem=datasources/data-source=java\:jboss\/my\/jndiName\/for\/DeployedDS/statistics=pool:read-resource(include-runtime=true)

jboss.as:deployment=my-ds.xml,subsystem=datasources,data-source="java:jboss/my/jndiName/for/DeployedDS",statistics=pool

请注意,在任何情况下,您必须首先启用这些统计信息,然后才能使用上面显示的方法访问任何有用的信息。这些统计数据可能是性能缺陷。您可以通过CLI启用这些统计信息:

/deployment=my-ds.xml/subsystem=datasources/data-source=java\:jboss\/my\/jndiName\/for\/DeployedDS/statistics=pool:write-attribute(name=statistics-enabled, value=true)

使用WildFly时,我一般建议在standalone.xml中配置数据源 - 它的支持方式更好。