2

我的应用程序部署在 Tomcat 上,并且我已经JAVA_OPTS/etc/default/tomcat7.

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

4

3 回答 3

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()方法的参数。

于 2013-06-19T14:17:21.767 回答
1

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

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

Java 工具

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

  2. jvisualvm连接到 Java 进程,让我们检查包括 MXBeans 在内的属性数量

GNU/Linux 工具

  1. ps e显示传递给进程的环境变量
于 2013-06-19T14:17:41.017 回答
1

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

下面将起作用:

示例: java -classpath 。-Dformat=xls -DTabname=\"基础数据新建\" com.cg.bench.GenerateReport

以下将不起作用:

错误示例: java -classpath 。com.cg.bench.GenerateReport -Dformat=xls -DTabname=\"基础数据新建\"

于 2016-06-23T08:00:07.570 回答