【问题标题】:Cannot access properties file in tomcat - linux无法访问tomcat中的属性文件 - linux
【发布时间】:2014-10-05 18:47:39
【问题描述】:

我在tomcatwebapps 文件夹中放置了一个.properties 文件,但我无法访问它。

我的servletwebapps 下的目录中。

我是否必须更改我的 java 代码才能查看父目录?

 private static final ResourceBundle ldap = ResourceBundle.getBundle("js_ldap");

【问题讨论】:

  • 我们将我们的文件放在 Tomcat 文件夹中 - 这意味着您可以对其进行编辑,并且这些编辑内容会在新版本中继续存在。您可以使用System.getProperty("catalina.home"); 找到该文件夹​​的路径。

标签: java linux tomcat servlets properties-file


【解决方案1】:

如果文件随您的应用程序随附,只需将该文件复制到您的类路径 (src/main/resources/anything.properties)。像往常一样使用 ResourceBundle 或 Properties 类加载它。

如果文件在许多应用程序中共享,并且经常更改或特定于服务器,则将其放在服务器上任何位置的目录中,授予正确的权限,并以绝对权限加载它使用 (Classloader).getResourcesAsStream(...) 的路径。不要把它放在服务器目录中,因为如果有人更改服务器,它可能会被删除。

我可以看到您正在尝试加载 LDAP 属性。如果您正在寻找一种对用户进行身份验证的方法,请创建一个JNDIRealm

【讨论】:

    【解决方案2】:

    要访问应用程序目录中的文件,您应该使用以下命令:

    private static final ResourceBundle ldap = ResourceBundle.getBundle("js_ldap.properties");
    

    关于属性文件的放置,我认为将它放在 webapps 目录中并不是一个好主意。考虑一下,作为开发人员,您在生产环境中无权访问此目录。

    更好的解决方案是将这些文件包含在一个 jar 中,并将这个 jar 放在 Tomcat 的类路径中。这样,属性文件可以被许多应用程序共享。

    【讨论】:

    • 如果我将 .properties 文件放在我的应用程序目录中,但我不想在每次创建新应用程序时复制/粘贴 .properties 文件
    • @stefan 所以我不能使用 ResourceBundle 并指定绝对路径?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多