【发布时间】:2015-06-24 21:31:36
【问题描述】:
我有一个要求,当客户端连接到服务器时,服务器必须确定客户端是否使用 -javaagent: 运行?服务器和客户端都是用 java 编写的。服务器有没有办法获取客户端正在运行的 java 选项?
【问题讨论】:
标签: java javaagents
我有一个要求,当客户端连接到服务器时,服务器必须确定客户端是否使用 -javaagent: 运行?服务器和客户端都是用 java 编写的。服务器有没有办法获取客户端正在运行的 java 选项?
【问题讨论】:
标签: java javaagents
在客户端,您可以使用 RuntimeMXBean 来获取 JVM 参数。我希望-javaagent 参数也将在那里公开。
有关示例,请参阅how-to-get-vm-arguments-from-inside-of-java-application。
【讨论】:
服务器可以通过客户端告诉它来发现,就像服务器想知道的关于连接未暗示的客户端的任何其他内容一样(例如,您知道 TCP 客户端的远程地址,在客户端通过连接发送它)。然而,将客户端的 JVM 参数发送到服务器是不可取的紧耦合。如果服务器的行为基于客户端的 JVM 参数而有所不同,那么只要 JVM 参数发生更改,服务器就必须更新以处理它们。相反,将变化的行为分解为客户端发送给服务器的标志。对于 HTTP,这可能是一个查询参数,对于 RMI 是一个方法参数,对于一个滚动你自己的协议......好吧,你可以自己滚动。
【讨论】:
使用此 API System.getProperty(PropertyName) 检查属性名称。它也可以用来查找 JVM 参数。如果它的返回值,那么你所期望的可以实现。
【讨论】: