2017-04-10 103 views
0

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

之间以下我创建了一个文件中命名yourfile.properties在/ home/nilushan/TEMP和也复制给定的Java代码并执行它。

但是我不断收到“jndi lookup中的异常”消息。在更改代码以打印异常之后,这是我得到的
“jndi lookup中的异常:javax.naming.NameNotFoundException:在此上下文中没有绑定名称[config]。无法找到[config]。”

从错误信息我知道这与不能读取context.xml文件中的内容有关,与yourfile.properties文件无关。

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

+0

试着去除家中前面的'/'。在你找到的答案中,给定的路径从根开始('C:\ ...'),所以它是绝对的。但显然你使用的是一个相对路径,从文件夹'home'开始。 – IQV

+0

@IQV,我按照建议和检查去掉了家中的领先/盈亏。但结果没有改变 – Nilushan

回答

0

那么一个很好的解决方案是使用配置服务器。当你设置它时,你可以指导你的属性文件从它的配置。这很容易设置,这是一个链接到文档(它很短,所以你应该快速理解它)link。您也可以将其用于其他war/jar文件。