【问题标题】:Tomcat Replacing VM argumentsTomcat 替换虚拟机参数
【发布时间】:2012-09-04 13:13:33
【问题描述】:

这可能是个愚蠢的问题:

我目前有一些我的 Web 应用程序需要的 VM 参数。它们类似于:

-Dcom.company.custom.var='test'

我在代码中访问它们:

System.getProperty("com.company.custom.config")

我想将它们移动到其中一个 tomcat xml 文件(server.xml、context.xml 等)中,但我不确定该怎么做。

所以我的问题分为两部分。我应该在哪里(以及如何)将这些变量放入 xml 中,以及如何在代码中访问它们?

在此先感谢,如果已经回答,我们深表歉意。我在这个主题上的搜索失败了。

【问题讨论】:

    标签: java tomcat servlets configuration jvm-arguments


    【解决方案1】:

    如果这些是特定于应用程序的配置项,则其标准位置是 <context-param> in web.xml。像这样的:

    <context-param>
        <param-name>myvar</param-name>
        <param-value>value</param-value>
    </context-param>
    

    您可以使用ServletContext#getInitParameter(String) 从代码中访问这些值。在 servlet 内部,您可以编写如下内容:

    String myvar = getServletContext().getInitParameter("myvar");
    

    【讨论】:

    • 感谢您的回答。它们不是特定于应用程序的。我可以把它们放在 tomcat/conf/web.xml 吗?
    • 我试试看。如果可行,我会将您的答案标记为正确。感谢您的快速回复。
    • 这对我来说不太有效,因为我使用 System.getProperty 的一些类对 ServletContext 不可见。无论如何感谢您的信息。
    【解决方案2】:

    正式地,所有 JVM 选项都转到 setenv.sh(适用于 Unix)或 setenv.bat(适用于 Windows)。这个文件is not present by default在Tomcat中,但是如果你创建一个,它会被启动脚本拾取。

    您应该使用它而不是 server.xml 的原因是 server.xml 可能会从一个 Tomcat 版本更改为另一个版本,但 setenv.sh(或 .bat)对您来说完全是自定义的。

    正如您所指出的,读取此值是通过System.getProperty(...)

    【讨论】:

    • 谢谢!我会考虑这样做。
    猜你喜欢
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 2023-03-04
    • 2012-08-13
    • 1970-01-01
    • 2011-06-11
    • 2020-01-23
    相关资源
    最近更新 更多