2015-07-12 2 views
1

Я хочу добавить 1 аннотацию к классу с библиотекой javassist. Класс загружается один раз раньше, и я знаю, что мы не можем перезагрузить такой класс в обычных случаях. javassist HotSwapper может это сделать, но я не знаю, какой порт прослушивает. При вызове этого кода я получаю отказ от отказа в подключении:Изменить класс во время выполнения с помощью javassist + spring + tomcat

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

Что такое порт? Порт отладки Java? Могу ли я использовать его, когда код находится в рабочем режиме? Я не знаю, как я могу перезагрузить класс во время выполнения. Возможно ли, когда мы используем весну и кошку? Как я могу запустить свой код перед загрузкой любого другого файла jar в пути класса?

Спасибо

ответ

1

Что такое порт? Порт отладки Java?

Да, вам нужно что-то подобное в ваших параметров VM:

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

Могу ли я использовать его, когда код находится в рабочем режиме?

Да. Агент не оказывает существенного влияния на производительность (как я знаю, я не уверен), но может повлиять и другие вещи (которые связаны с портом jdwp).

Я не знаю, как я могу перезагрузить класс во время выполнения. Возможно ли использовать , когда мы используем весну и кошку?

Вы можете попытаться позвонить по телефону reloadHotSwapper. Проверьте этот пример от javadoc (link to javadoc):

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