Какое общение происходит между Eclipse и сервером приложений (JBoss), когда я запускаю сервер из Eclipse в режиме отладки? Как это работает?Как код отладки Eclipse на сервере приложений?
ответ
При запуске сервера в режиме отладки, он прослушивает указанный TCP-порт. Eclipse подключается к этому порту, и они разговаривают с использованием протокола Java Debug Wire Protocol (JDWP). Читайте подробности здесь: http://java.sun.com/j2se/1.5.0/docs/guide/jpda/
Я думаю, что это называется JDWP (Java Debugging Wire Protocol) - читать далее here
Отладка Eclipse начинается с так называемых агентов.
JVM, который запускает подчиненные источники .class, имеет функцию, которая позволяет вводить внешние библиотеки (написанные на Java или C++) в JVM, примерно во время выполнения. Эти внешние библиотеки называются агентами, и у них есть возможность изменять содержимое файлов .class. Эти агенты имеют доступ к функциям JVM, которые недоступны из обычного Java-кода, запущенного внутри JVM, и их можно использовать для создания интересных вещей, таких как инъекция и изменение исходного кода, профилирование и т. Д. Такие инструменты, как JRebel, используют эта часть функциональности для достижения своей магии.
И пройти агент Lib к JVM, вы делаете это с помощью Запускают аргументы, используя
agentlib:libname[=options] format.
Мы были на самом деле пропускание агента Lib имя JDWP к JVM работает Tomcat. Jdwp представляет собой специфическую JVM, необязательную реализацию JDWP (Java Debug Wire Protocol), который используется для определения связи между отладчиком и запущенной JVM. Это реализация, если присутствует в качестве исходной библиотеки JVM как jdwp.so или jdwp.dll
Так что же это делает? Проще говоря, агент jdwp, который мы передаем, в основном служит функцией связи между экземпляром JVM, запускающим приложение, и отладчиком (который может быть расположен как удаленно, так и локально). Так как это библиотека агентов, у нее есть возможность перехватить запущенный код, создать мост между JVM и отладчиком и использовать функциональность отладчика, применяемого к JVM. Поскольку в JVM-архитектуре функциональность отладки не найдена в самой JVM, но отвлечена на внешние инструменты (которые точно называются отладчиками), эти инструменты могут либо находиться на локальном компьютере, на котором JVM отлаживается, либо бежать от внешней машины. Именно эта несвязанная модульная архитектура позволяет нам запускать JVM на удаленном компьютере и использовать JDWP, чтобы удаленный отладчик мог общаться с ним.
Вот как отладчик Eclipse работает коротким.