【问题标题】:How to deploy javaagent with 3rd party libs dependencies如何使用 3rd 方库依赖项部署 javaagent
【发布时间】:2016-08-24 02:02:47
【问题描述】:

我们编写了一个 javaagent 来帮助开发人员调试。但是,在发布这个工具之前,我们对 java-agent 的部署还有一些疑问。

用户可以将代理与一些 tomcat 应用程序一起使用。代理使用 Premain 方法来转换类。我们使用 javassist 3.18.2-GA 来插入代码。我们目前将 javassist.jar 添加到 MANIFEST.MF 的 Boot-Class-Path 中。我们把agent和javassist.jar都放到tomcat的lib目录下。

问题是:

  1. 好吧,至少,它有效。但这是为 tomcat 应用程序部署代理和依赖项的正确方法吗?
  2. 因为大多数使用hibernate的tomcat应用程序也使用javassist 3.18.2-GA,所以现在可以了。但据我了解,3.20 与 3.18.2 并不完全兼容。建议有人将 javassist 更新到更高版本,代理或应用程序是否会由于 2 个不同 javassist 之间的冲突而崩溃。

【问题讨论】:

    标签: java tomcat manifest javassist javaagents


    【解决方案1】:

    添加了一个 javaagent 并在 VM 的类路径上运行。因此,您有以下选择:

    1. 在启动 VM 时将依赖项添加到类路径中,就像在部署普通应用程序时一样。对于像 Tomcat 这样的应用程序容器,这将是此类依赖项的适当目录。
    2. 使用 fatjar 之类的工具将依赖项与代理捆绑在一起。这样做,您还可以使用 Maven Shade 插件将依赖项转移到不同的命名空间以避免版本冲突。
    3. 在运行您的实际代理应用程序之前,使用Instrumentation API 手动附加依赖项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多