gpt4 book ai didi

java - 使用 javassist + spring + tomcat 在运行时更改类

转载 作者:行者123 更新时间:2023-11-28 22:18:49 33 4
gpt4 key购买 nike

我想用 javassist 库向类添加 1 个注释。该类之前加载过一次,我知道在常规情况下我们无法重新加载此类。 javassist HotSwapper 可以做到这一点,但我不知道哪个端口正在监听。调用此代码时出现连接被拒绝异常:

HotSwapper hs = new HotSwapper(8000);  // 8000 is a port number.

端口是什么? Java调试端口?我可以在代码处于运行模式时使用它吗?我不知道如何在运行时重新加载该类。当我们使用 spring 和 tomcat 时可以吗?在类路径中加载任何其他 jar 文件之前如何运行我的代码?

谢谢

最佳答案

What is the port? Java debug port?

是的,您的 VM 参数中需要这样的内容:

-agentlib:jdwp=transport=dt_socket,address=localhost:8000,server=y,suspend=y

Can I use it when the code is in running mode?

是的。代理不会显着影响性能(据我所知,我不确定),但其他东西(连接到 jdwp 端口)当然可能会影响。

I don't know how i can reload the class in runtime. Is it possible when we are using spring and tomcat?

您可以尝试调用HotSwapperreload 方法。从 javadoc ( link to javadoc ) 检查这个例子:

 CtClass clazz = ...
byte[] classFile = clazz.toBytecode();
HotSwapper hs = new HostSwapper(8000); // 8000 is a port number.
hs.reload("Test", classFile);

关于java - 使用 javassist + spring + tomcat 在运行时更改类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31365854/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com