加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java – 将java代理注入到运行jvm中

发布时间:2020-12-14 23:59:13 所属栏目:Java 来源:网络整理
导读:基本上,我正在尝试编写一些列出JVM加载的每个类的东西.我写的是有效的,但它只适用于它运行的jvm. 我精心设计了一个 java代理来动态注入另一个JVM,但后来意识到我实际上并不知道如何注入它. 我如何实际将此代理发送到另一个JVM? 可能吗? 解决方法 动态代理
基本上,我正在尝试编写一些列出JVM加载的每个类的东西.我写的是有效的,但它只适用于它运行的jvm.
我精心设计了一个 java代理来动态注入另一个JVM,但后来意识到我实际上并不知道如何注入它.
我如何实际将此代理发送到另一个JVM?
可能吗?

解决方法

动态代理需要声明在目标VM中附加时执行的agentmain(String,Instrumentation)方法.您可以使用tools.jar依赖项,它(仅限 Java 9)仅包含在JDK中,但不包含在JRE中.但是,您可以将代理程序与JDK捆绑在一起,并从那里附加到JVM.

最大的问题是不同的虚拟机API有所不同;但是,您可以使用像byte-buddy-agent这样的库,其中包含不同VM的不同实现.附件将通过以下方式完成:

ByteBuddyAgent.attach("my.jar","my-pid");

这会将my.jar中包含的代理程序附加到具有id my-id的Java进程上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读