尝试读取 java .war 外部的 .properties 文件时出错



我正在构建一个Java Web应用程序,它允许用户将一些文件上传到服务器。由于 .war 文件可能部署在具有不同文件系统层次结构的服务器中,因此我想提供一个 .properties 文件,并让服务器管理员定义在初始系统配置期间保存这些文件的位置。然后,我的应用程序将读取此 .properties 文件以确定存储上载文件的位置。

在寻找一种方法时,我在堆栈溢出上遇到了类似的问题,并尝试按照以下答案中的说明进行操作。
https://stackoverflow.com/a/8941774

我想试试这个解决方案是否有效。 所以我编辑了我的/usr/share/tomcat8/conf/context.xml 文件,并在<Context> </Context>标签之间包含以下内容

<Environment name="config" value="/home/nilushan/temp/"  
type="java.lang.String" override="false"/>

我在/home/nilushan/temp 中创建了一个名为 yourfile.properties 的文件,并复制了给定的 Java 代码并执行了它。

但是,我一直收到"jndi 查找中的异常"消息。更改代码以打印异常后,这就是我得到
的"jndi 查找中的异常:javax.naming.NameNotFoundException:Name [config] 在此上下文中未绑定。找不到 [配置]。

从错误消息中,我了解到这与无法读取上下文.xml文件中的内容有关,与yourfile.properties文件无关。

有人可以告诉我我做错了什么来得到这个错误以及如何解决它?

这个问题的一个很好的解决方案是使用配置服务器。设置它时,您可以指示属性文件从中获取其配置。它很容易设置,这里有一个文档链接(它很短,所以你应该很快理解它)链接。您也可以将其用于其他战争/jar文件。

最新更新