java - 与外部程序共享数据库连接
问题描述
我们在 Web 容器(WildFly 14)中启动了应用程序Foo 。它通过 JNDI 以标准方式获取数据库连接。因此,连接不是在应用程序内部配置的,而是在 WildFly 中配置的。
现在,Foo在同一台机器上启动了一个外部程序Bar 。这个外部程序完全独立于主应用程序,但需要访问相同的数据库。Bar也通过管道连接到Foo,因此将可序列化对象从一个传递到另一个不是问题。
通过简单的实现,我需要将Bar与Foo分开配置对数据库的访问。
是否有可能自动将必要的数据库连接参数从Foo传递到Bar?由于我们使用两种不同类型的数据库,这也将包括 JDBC 驱动程序(Foo从 WildFly 部署中“免费”获取)。加上 JDBC URL、用户名和密码。自动确定甚至其中的一些会有所帮助。
我们控制并可以更改此设置中的几乎所有内容(Foo和Bar源,WildFly 配置)。
解决方案
实际上还有其他两种选择(比 JNDI 轻得多)
- 您可以使用 Wildfly 的管理 REST api来读取服务器上定义的数据源设置(在 /configuration/standalone-***.xml 中)。您的应用程序可以发出一个简单的(经过身份验证的)http GET 请求并解析获得的 xml。
- 同样,这些设置也由 Wildfly 在JMX中公开。您只需阅读它们,或者使用 JDK 的 JMX api,或者使用众多开源库之一来简化 JMX 查询。只需运行“jconsole”,连接到运行 WF 服务器的进程,然后查找数据源的属性。=> 找到“ConnectionUrl”、“userName”和“password”属性。然后编写您的应用程序以读取这 3 个属性。
祝你好运 !
推荐阅读
- powerbi - ODBC:错误 [HY000] [Microsoft][DriverSupport] (1170)
- templates - 鹡鸰中未读取模板
- c# - System.Collections.Immutable.dll 正在从 Microsoft.Net.Compilers 包中替换
- linux-kernel - 从 GRUB 菜单项运行脚本
- weblogic - 为什么除了争用之外还有卡住的线程,比如慢 IO、慢后端(DB 查询、Web 服务、rmi 调用)?
- excel - 如何将字符串名称更改为特定的字符串名称?
- php - 错误代码 450 未采取请求的邮件操作:发送电子邮件时邮箱不可用 laravel
- git - 使用 Visual Studio 2017 中的 git 克隆时出现“路径中的非法字符”
- php - 数据表排序无法正常工作
- r - 检查一个值的向量元素是否放置在R中其他两个值的向量元素之间