我想在带有javassist库的类中添加1个注释。该类之前已加载过一次,我知道在常规情况下我们无法重新加载这样的类。 javassist HotSwapper可以做到这一点,但我不知道哪个端口正在侦听。调用此代码时,我收到连接拒绝异常:
HotSwapper hs = new HotSwapper(8000); // 8000 is a port number.
什么是港口? Java调试端口?我可以在代码处于运行模式时使用它吗? 我不知道如何在运行时重新加载类。我们使用spring和tomcat时有可能吗?如何在类路径中加载任何其他jar文件之前运行我的代码?
谢谢
答案 0 :(得分:1)
什么是港口? Java调试端口?
是的,您需要在VM参数中使用以下内容:
-agentlib:jdwp=transport=dt_socket,address=localhost:8000,server=y,suspend=y
我可以在代码处于运行模式时使用它吗?
是。代理不会显着影响性能(据我所知,我不确定),但其他事情(连接到jdwp端口)当然可能会产生影响。
我不知道如何在运行时重新加载该类。可能吗 当我们使用spring和tomcat时?
您可以尝试调用reload
的{{1}}方法。从javadoc(link to javadoc)检查此示例:
HotSwapper