【问题标题】:How to find if Javaagent is running如何查找 Javaagent 是否正在运行
【发布时间】:2015-06-24 21:31:36
【问题描述】:

我有一个要求,当客户端连接到服务器时,服务器必须确定客户端是否使用 -javaagent: 运行?服务器和客户端都是用 java 编写的。服务器有没有办法获取客户端正在运行的 java 选项?

【问题讨论】:

    标签: java javaagents


    【解决方案1】:

    在客户端,您可以使用 RuntimeMXBean 来获取 JVM 参数。我希望-javaagent 参数也将在那里公开。
    有关示例,请参阅how-to-get-vm-arguments-from-inside-of-java-application

    【讨论】:

      【解决方案2】:

      服务器可以通过客户端告诉它来发现,就像服务器想知道的关于连接未暗示的客户端的任何其他内容一样(例如,您知道 TCP 客户端的远程地址,在客户端通过连接发送它)。然而,将客户端的 JVM 参数发送到服务器是不可取的紧耦合。如果服务器的行为基于客户端的 JVM 参数而有所不同,那么只要 JVM 参数发生更改,服务器就必须更新以处理它们。相反,将变化的行为分解为客户端发送给服务器的标志。对于 HTTP,这可能是一个查询参数,对于 RMI 是一个方法参数,对于一个滚动你自己的协议......好吧,你可以自己滚动。

      【讨论】:

        【解决方案3】:

        使用此 API System.getProperty(PropertyName) 检查属性名称。它也可以用来查找 JVM 参数。如果它的返回值,那么你所期望的可以实现。

        【讨论】:

          猜你喜欢
          • 2013-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-03
          • 1970-01-01
          • 2017-10-14
          • 2016-10-21
          • 1970-01-01
          相关资源
          最近更新 更多