与外部程序共享数据库连接

时间:2018-10-25 18:15:57

标签: java java-ee jdbc wildfly

我们在Web容器(WildFly 14)中启动了应用程序 Foo 。它通过JNDI以标准方式获取数据库连接。因此,连接不是在应用程序内部配置的,而是在WildFly中配置的。

现在, Foo 在同一台计算机上启动一个外部程序 Bar 。该外部程序旨在与主应用程序完全独立,但需要访问完全相同的数据库。 Bar 也通过管道连接到 Foo ,因此将可序列化的对象从一个传递到另一个不是问题。

通过简单的实现,我需要与 Foo 分开配置 Bar 对数据库的访问。

是否可以通过某种方式自动将必要的数据库连接参数从 Foo 传递到 Bar ?由于我们使用两种不同类型的数据库,因此它也将包括JDBC驱动程序( Foo 从WildFly部署中“免费”获得)。加上JDBC URL,用户名和密码。自动确定其中的一些也会有所帮助。

我们控制并几乎可以更改此设置中的所有内容( Foo Bar 源,WildFly配置)。

1 个答案:

答案 0 :(得分:1)

实际上还有其他两种选择(比JNDI轻巧得多)

  1. 您可以使用Wildfly的 admin REST api 来读取服务器上定义的数据源设置(在/configuration/standalone-***.xml中)。您的应用程序可以发出一个简单的(经过身份验证的)http GET请求并解析所获取的xml。

http://localhost:9990/management/subsystem/datasources/data-source/ExampleDS?operation=resource&recursive=true&json.pretty=1

  1. 类似地,这些设置也由 JMX 中的Wildfly公开。您只需使用JDK的JMX api或易于使用JMX查询的众多开源库之一来阅读它们。 只需运行一个“ jconsole”,连接到运行WF服务器的进程,然后查找数据源的属性。 =>找到“ ConnectionUrl”,“ userName”和“ password”属性。然后对您的应用进行编码以读取这3个属性。

祝你好运!

enter image description here