java - 尝试在 java .war 之外读取 .properties 文件时出错

标签 java tomcat

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

在寻找执行此操作的方法时,我在 Stack Overflow 上遇到了一个类似的问题,并尝试按照以下答案中给出的说明进行操作。
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:名称 [config] 未绑定(bind)在此上下文中。无法找到 [config]。”

根据错误消息,我了解到这与无法读取 context.xml 文件中的内容有关,与您的 file.properties 文件无关。

谁能告诉我我做错了什么导致这个错误,我该如何解决?

最佳答案

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

关于java - 尝试在 java .war 之外读取 .properties 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43317589/

相关文章:

java - 异常 : org. hibernate.SessionException: session 已关闭

tomcat - Amazon EC2 上的 JVM 调优

java - eclipse无法启动我的tomcat服务器,如何开启服务器

java - 在不改变页面的情况下提取和处理textarea值形式

java - cvc-复杂-类型.2.4.a : Invalid content was found starting with element 'beans:bean'

java - 使用 Spring、Hibernate、JSP 创建下拉列表

java - 将 Java 项目直接放在源代码存储库下是最佳做法吗

tomcat - 在 tomcat 上配置 ssl/tls

spring - 从 JNDI 为 Spring Boot 设置 Spring @Profile

java - 找不到 OnClickListener