gpt4 book ai didi

java - 如何在特定的 Web 应用程序部署事件上加载 tomcat jndi 资源/上下文

转载 作者:行者123 更新时间:2023-11-28 22:53:09 25 4
gpt4 key购买 nike

我有一个 Web 应用程序,它通过 <GlobalNamingResources> 中的 jndi 资源标记获取数据库连接。在 server.xml 中标记或 <Context>context.xml 中标记.

但即使是这两种情况,Tomcat 中的每个 Web 应用程序都会调用资源,有没有一种方法可以定义只为特定 Web 应用程序加载的资源。

我也被限制在应用程序中定义资源 context.xml ,因为我被要求在应用程序/WAR 文件之外进行数据库配置。

目前我保存在<GlobalNamingResources>标记及其为所有网络应用程序加载。

有什么想法吗?

最佳答案

据我所知,一般来说,你放在 war 之外的东西可以从 war 之外访问。

是的,JNDI 是一种定义数据源的“简单”方式。然而,这意味着 DB 驱动程序也将部署在 war 之外。当需要在不同 WAR 之间共享驱动程序连接时,通常这种方法很好。资源由 Tomcat 的内部类加载器加载,而不是由分配给 WAR 的类加载器加载。

我不知道这种全局资源有任何方式或 WAR 限制。

所以,我认为你在这里没有太多选择:如果你想定义一个“私有(private)”应用程序的数据源,你必须在 war 中定义它。

您还说过“您只能在应用程序的 context.xml 中定义资源”并将数据库配置存储在 WAR 之外。

为什么会有这样的需求?

一般来说,可以在 WAR 外部维护一些外部配置(例如,属性文件),这些配置将包含主机/用户/密码和 WAR 外部数据库的其余连接属性,但在内部定义数据源本身带有连接池和所有内容的 WAR(比如在 Spring 中或直接)。

如果您需要从几个可能的配置中进行选择,也可以使用 Spring 中的配置文件,但由于我根本不知道您是否使用 Spring,因此很难在这里发表任何声明并给出具体建议.

在您的情况下,这可能是更受欢迎的方法吗?

关于java - 如何在特定的 Web 应用程序部署事件上加载 tomcat jndi 资源/上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com