Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与外部程序共享数据库连接_Java_Jakarta Ee_Jdbc_Wildfly - Fatal编程技术网

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

Java 与外部程序共享数据库连接,java,jakarta-ee,jdbc,wildfly,Java,Jakarta Ee,Jdbc,Wildfly,我们在Web容器WildFly 14中启动了应用程序Foo。它通过JNDI以标准方式获得数据库连接。因此,连接不是在应用程序内部配置的,而是在WildFly中配置的 现在,Foo在同一台机器上启动一个外部程序条。这个外部程序完全独立于主应用程序,但需要访问同一个数据库。Bar还通过管道连接到Foo,所以将可序列化对象从一个对象传递到另一个对象不是问题 通过简单的实现,我需要将Bar对数据库的访问与Foo分开进行配置 是否有可能自动将必需的数据库连接参数从Foo传递到Bar?由于我们使用两种不同类

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

现在,Foo在同一台机器上启动一个外部程序条。这个外部程序完全独立于主应用程序,但需要访问同一个数据库。Bar还通过管道连接到Foo,所以将可序列化对象从一个对象传递到另一个对象不是问题

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

是否有可能自动将必需的数据库连接参数从Foo传递到Bar?由于我们使用两种不同类型的数据库,这将包括JDBC驱动程序,Foo从WildFly部署中免费获得它。加上JDBCURL、用户名和密码。自动确定哪怕是其中的一部分也会有所帮助


我们可以控制并更改此设置中的所有内容—Foo和Bar源代码、WildFly配置。

实际上还有两种比JNDI更轻量级的替代方案

您可以使用Wildfly的admin REST api读取服务器上在/configuration/standalone-***.xml中定义的数据源设置。因此,您的应用程序可以发出一个简单的经过身份验证的http GET请求,并解析获得的xml。 类似地,这些设置也由JMX中的Wildfly公开。您只需使用JDK的JMXAPI或众多易于使用JMX查询的开源库之一来阅读它们。 只需运行一个jconsole,连接到运行WF服务器的进程,并查找数据源的属性。 =>找到ConnectionUrl、用户名和密码属性。然后编写应用程序以读取这3个属性。 祝你好运


为什么您的外部应用程序不也使用JNDI从Wildfly服务器获取数据源?datasourcedatasource=DataSourceinitialContext.lookupjava:comp/env/jdbc/demo;因为它是作为一个单独的进程运行的,没有访问WildFly的权限。您的进程即使是单独的,也只需要访问网络。您的应用程序将包含一个JNDI客户端,该客户端通过网络查找远程JNDI服务器。属性jndiproperty=新属性;jndiProperties.putContext.PROVIDER_URL;InitialContext=新的InitialContext JNDIProperty;我对JNDI有非常基本的了解,简短的研究表明它让我非常困惑。您是否可以写一个答案,详细说明在同一台机器上运行的进程如何通过JNDI连接到WildFly并检索绑定对象?例如,它是否需要额外的库等。另外,我希望在建立连接后,进程将直接与数据库对话,而不涉及WildFly,对吗?工作时有一个小怪癖。如果我稍后执行JMX查询,当WildFly已经完全初始化时,一切都很好。但是如果我在服务器启动时这样做,我会得到奇怪的行为:MBeanServer.queryMBeans。。。正确返回JDBC连接配置列表,但其中的MBeanServer.getAttribute失败,WFLYCTL0013:操作读取属性失败。。。WFLYCTL0216:未找到管理资源“[\subsystem\=>\datasources\]”。您是否碰巧知道如何等待服务器引导完成?无需担心,您也知道如何使用JMX完成引导。显然,WildFly从不发送通知,至少对于jboss.as:management root=server中的更改是这样,但我可以每秒轮询一次。