【问题标题】:Get tomcat to spill system properties让tomcat溢出系统属性
【发布时间】:2018-07-10 14:26:55
【问题描述】:

我用谷歌搜索了所有我能想到的东西,但一无所获。

有没有人知道如何让 tomcat 转储当前运行时环境的 System.getProperties() 的输出?有时肯定会有用。

【问题讨论】:

  • 要么部署一个完全执行此操作的 Web 应用程序,要么尝试使用 jmx 查看该数据是否可用。
  • 对于投反对票的人,这个问题有什么问题?
  • 也许是因为您的问题没有显示您自己解决的努力。但那不是我。
  • 我编辑了这个问题。谢谢@EugèneAdell。

标签: java tomcat system-properties


【解决方案1】:

如果您使用 java 任务控制工具,您实际上可以复制粘贴这些值:

$JAVA_HOME/bin/jmc

针对您的 Tomcat 的 JVM 进程启动一个 JMX 控制台,然后在 System 选项卡下查看。您可以查看所有值并复制System properties下的值。

如果您要从远程计算机执行此操作,您可能需要检查 the documentation on enabling remote JMX

【讨论】:

    【解决方案2】:

    除了 Java Mission Control,您还可以使用 icmd 来完成。首先列出 Java 进程:

    $JAVA_HOME/bin/jcmd
    

    然后输入Tomcat进程的PID:

    $JAVA_HOME/bin/jcmd <pid> VM.system_properties
    

    【讨论】:

      【解决方案3】:

      根据我的回答here,创建一个包含此内容的 JSP:

      <%@ page import="java.util.Properties" %>
      <%@ page import="java.util.Set" %>
      
      <%
      Properties p = System.getProperties();
      
      Set<String> keys = p.stringPropertyNames();
      for (String key : keys)
        out.println(key + " : " + p.getProperty(key));
      
      %>
      

      请记住,除了管理员之外,您不应向任何人透露此信息(例如,如果存储在属性中,即使是开发团队也不应该知道数据库密码)。

      【讨论】:

      • 我当然可以编写代码来做到这一点。我想知道是否有开箱即用的 tomcat 查看方法。
      • @Thom 如果您仔细阅读自己的问题,我的回答是可以接受的。 f1sh 已经给出了另一个解决方案,它基于 JMX,但它并不完全是一个转储。我们不能总是假设问题背后的技能。答案可能看起来很明显,也可能不明显。
      猜你喜欢
      • 1970-01-01
      • 2019-05-16
      • 2016-02-09
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多