0

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

但即使在任何一种情况下,Tomcat 中的每个 Web 应用程序都会调用资源,有没有办法定义仅为特定 Web 应用程序加载的资源。

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

目前,我将它保存在<GlobalNamingResources>标签中,并为所有网络应用程序加载它。

有任何想法吗?

4

1 回答 1

1

据我所知,一般来说,你放在战争之外的东西可以从战争之外获得。

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

我不知道 WAR 对这种全球资源的任何方式或限制。

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

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

你为什么有这样的要求?

通常,可以在 WAR 之外维护一些外部配置(例如,属性文件),其中将包含主机/用户/密码和 WAR 之外数据库的其余连接属性,但在 WAR 内部定义 DataSource 本身(例如在 Spring 或直接)与连接池和一切。

如果你只需要从几个可能的配置中进行选择,也可以在 Spring 中使用配置文件,但是由于我根本不知道你是否使用 Spring,所以在这里很难做出任何陈述和给出具体的建议。

在您的情况下,它可能是一种更优选的方法?

于 2015-12-09T20:28:23.183 回答