【问题标题】:Is it possible to import JNDI context.xml file from file system into Spring application?是否可以将 JNDI context.xml 文件从文件系统导入 Spring 应用程序?
【发布时间】:2016-03-01 02:06:47
【问题描述】:

我们有一个巨大的企业应用程序,其中有很多 JNDI 条目写入 context.xml 文件中。目前 context.xml 文件保存在我们应用程序的 META-INF 文件夹中。我们需要将它移出应用程序和服务器,以便我们可以在需要时修改 JNDI 条目。我们不能将它保存在 tomcat 根文件夹中的任何位置,因为我们使用图像文件来启动服务器,我们将无法访问服务器内的文件。

所以我想知道是否可以使用 spring 从文件系统中导入 JNDI 上下文文件?如果不是春天,我们还有其他选择来完成这项工作吗?我研究了2天,还没找到解决办法。

编辑: 是的,我接受所有这些答案,这就是我们这些年来一直在做的事情。要么将 context.xml 保存在应用程序内的 meta-inf 文件夹中,要么将其保存在服务器 conf 目录中,或者将其放在 conf/catalina/localhost/warfilename.xml 下。所有这些方法都有效。但是现在我们正在研究是否有可能在我们的本地文件系统中拥有服务器之外的 xml 文件,并让 tomcat 或我们的应用程序来导入它。请让我知道这是否可能。这是我们正在做的一种研究。

原因是,我们会将我们的产品销售给很多客户,并且我们将我们的产品捆绑为图像文件。我们不能为每个客户单独创建图像文件。所以我们只是试图将 context.xml 文件移到我们的镜像之外,并在我们的应用程序或服务器之外保持它的可配置性,这样当我们在客户的机器上安装我们的产品时,我们可以修改 jndi 条目。

如果问题仍然不清楚,请告诉我。我真的很感谢你的帮助。

谢谢, 桑杰

【问题讨论】:

  • context.xml 文件的整个想法是它已经在应用程序本身之外。,在文件系统中而不是在代码。

标签: java spring tomcat jndi


【解决方案1】:

我不明白你在做什么。

JNDI 是服务器端的命名和目录查找服务。客户应该修改这些设置。

context.xml 必须位于 Tomcat /conf 文件夹中。毫无疑问。

我假设“客户端”是指与服务器端对话的用户界面。

如果“客户端”的意思是“在单个 Tomcat 实例上运行的其他应用程序,那更是如此。为什么一个客户端能够修改其他人使用的值?

Spring 有 JNDI 对象工厂。这就是 Spring 使用 JNDI 的方式。

也许你找不到任何告诉你该怎么做的原因是没有人应该做这样的事情。

目前还不清楚您想象的要求是什么。请澄清,我会编辑。

【讨论】:

  • 抱歉不清楚。我已经编辑了这个问题。如果可能,请告诉我。
  • 它不必在 Tomcat conf 文件夹中。它可以在 webapp 的 META-INF 目录中提供。
  • 我从来没有这样设置过 Tomcat。这是一个应用服务器问题,而不是一个应用程序。 JNDI 资源可以由任何已部署的应用程序共享。如果它们具有相同的名称但值冲突怎么办?然后会发生什么?
  • 是的,我接受所有这些答案,这就是我们这些年来一直这样做的方式。要么将 context.xml 保存在 meta-inf 文件夹中,要么将其保存在服务器 conf 目录中,或者将其放在 conf/catalina/localhost/warfilename.xml 下。但是现在我们正在研究是否可以将 xml 文件放在服务器外部的本地文件系统中,并让 tomcat 或我们的应用程序导入它。请让我知道这是否可能。这是我们正在进行的一项研究。
  • 在我们的例子中,不会在我们的服务器中部署其他应用程序。所以两个应用程序不可能共享这个 jndi 上下文。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
相关资源
最近更新 更多