在运行时获取JAVA_OPTS

时间:2013-06-19 13:54:14

标签: java tomcat

我的应用程序部署在Tomcat上,我在JAVA_OPTS中配置了/etc/default/tomcat7环境变量。

似乎有一百万个不同的地方可以将这些变量提供给Tomcat,所以我想检查我提供的值是实际使用的值。我是否可以在运行时检查以确定此变量的值。我检查了System.getProperties(),但似乎没有。

3 个答案:

答案 0 :(得分:2)

如果您正在寻找 属性覆盖和JVM参数,您可以使用RuntimeMXBean

RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean();
System.out.println(mxBean.getInputArguments());

例如,使用以下命令行运行:

java -Xms512m -Xmx1024m -Dtest.prop=foo com.example.sandbox.RuntimeMXBeanExample

我得到以下输出:

[-Xms512m, -Xmx1024m, -Dtest.prop=foo]

请注意,包含传递给main()方法的参数。

答案 1 :(得分:1)

您可以按照建议使用System.getenv("JAVA_OPTS")

如果您不想修改代码,则可以使用其中一些方法

Java工具

  1. jps -v显示带参数的Java进程

  2. jvisualvm连接到Java进程,让你检查多少属性,包括MXBeans

  3. GNU / Linux工具

    1. ps e显示传递给流程的环境变量

答案 2 :(得分:1)

一个重要的事情,虽然帖子很旧。无论你传递什么变量,它都应该在你正在执行的类名之前,否则它将被忽略。

下面会有效:

示例:java -classpath。 -Dformat = xls -DTabname = \“Base data new \”com.cg.bench.GenerateReport

以下不起作用:

错误示例:java -classpath。 com.cg.bench.GenerateReport -Dformat = xls -DTabname = \“Base data new \”