- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Eclipse 和 Tomcat 6 在 Java 中开发 Web 应用程序。
我需要将一个未硬编码到 .war 文件中的值传递给 servlet。
例如,假设我的 servlet 需要一个文件名,而该文件名在每台服务器上都不同。
如何将它传递给 servlet,而不在 .war 文件中对其进行硬编码?
请帮助我了解如何执行此操作的说明:
我在想getInitParameter
的方向,但是除了web.xml
里面 .war 文件,这不是一个选项,因为它需要是可配置的。因此,如果您能告诉我如何在外部文件中设置初始化参数,问题就解决了。
注意:我正在寻找非常准确的建议,例如“在那个 位置编辑那个 文件”。我找到了许多相关的问题和答案,但没有一个足够具体以使其有效。
最佳答案
有很多方法可以解决这个问题。这实际上取决于您在什么时候知道要加载的文件的位置。如果这是您要为每个 tomcat 实例/服务器配置的东西,那么环境变量或 JVM 参数可能是最简单的。然后,您可以在代码中通过 System.getProperty 查找此变量。
您可以通过 CATALINA_HOME/bin/setenv.sh 在每个 tomcat 的基础上传递 JVM 参数。
#!/bin/sh
CATALINA_OPTS="$CATALINA_OPTS
-Dmy.file.path=/path/on/this/host/file.txt"
在你的代码中:
String path = System.getProperty("my.file.path")
Dhanush 的建议也是一个很好的建议,从长远来看可能更具可持续性。它的优点是将所有每个环境的配置都保存在一个位置,您可以将其保存在源代码管理中。然而,使用他的方法,您仍然需要一种方法来从属性文件中选择适当的键(因为这个属性文件将捆绑在您的 war 中),您可以再次使用环境变量或 JVM 参数来控制它。
如果你想变得更高级一点,你可以考虑使用 JNDI
关于java - 将配置值传递给 servlet 而无需在 .war 文件中对其进行硬编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21707570/
我是一名优秀的程序员,十分优秀!