在运行时获取JAVA_OPTS

3

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

似乎有无数个地方可以向Tomcat提供这些变量,所以我想检查我提供的值是否实际在使用。在运行时是否有什么可以检查来确定这个变量的值。我检查了System.getProperties(),但它似乎不在那里。


3
getenv(String name)方法返回特定环境变量的值。如果没有这样的变量,则返回null。 - PeterMmm
3个回答

2
如果您仅需要属性覆盖和JVM参数,可以使用RuntimeMXBean: 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()方法的参数。

2

您可以像建议的那样使用 System.getenv("JAVA_OPTS")

如果您不想修改代码,那么您可以使用以下一些方法:

Java工具

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

  2. jvisualvm 连接到Java进程,让您检查包括MXBeans在内的多个属性

GNU/Linux工具

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

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\"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接