Удаленная отладка приложения Bluemix CF Java buildpack
У меня есть автономное Java-приложение, развернутое в IBM Bluemix в виде пакета компоновки Java Cloud Foundry.
Есть ли способ выполнить удаленную отладку в Eclipse? Я мог найти только документы для удаленной отладки приложений Java Liberty buildpack.
2 ответа
Способ прослушивания сокетов, упомянутый в другом ответе, безусловно, удобен, но предполагает, что вам назначен общедоступный IP-адрес вашей машине отладки (или вам необходимо настроить переадресацию портов на маршрутизаторе). Это не всегда возможно.
Поэтому другой способ сделать это - включить отладку в приложении Java и использовать переадресацию порта ssh для подключения к экземпляру приложения. Ниже приведены шаги
- Включите отладку Java, установив переменную среды
JBP_CONFIG_DEBUG
со значением{enabled: true}
и перезапустить приложение. Настройте туннель SSH для инфраструктуры отладки через JDWP
cf ssh -N -T -L 8000:localhost:8000 <APP_NAME>
После открытия туннеля ssh вы используете тип отладки Socket Attach из eclipse on
localhost:8000
Предпосылки перед cf ssh
: cf api
, cf login
, cf target
Некоторые инструкции содержатся в документации по Java buildpack по адресу https://docs.cloudfoundry.org/buildpacks/java/java-tips.html
- Откройте свой проект в Eclipse.
- Щелкните правой кнопкой мыши по вашему проекту, перейдите к "Отладка как" и выберите "Конфигурации отладки".
- Создайте новое удаленное Java-приложение.
- Убедитесь, что ваш проект выбран, выберите Standard (Socket Listen) из выпадающего списка Connection Type и установите порт. Убедитесь, что этот порт открыт, если вы используете брандмауэр.
- Нажмите Отладка.
Теперь отладчик должен быть запущен. Если вы переключитесь на перспективу Debug, вы должны увидеть свое приложение в списке на панели Debug и оно должно сказать Waiting for vm to connect at port
,
Затем перенесите ваше приложение в Cloud Foundry и дайте команду Cloud Foundry подключиться к отладчику, работающему на вашем локальном компьютере, используя следующие инструкции:
- Отредактируйте ваш файл manifest.yml. Установите количество экземпляров равным 1. Если вы установите значение больше одного, несколько приложений попытаются подключиться к вашему отладчику.
- Также в manifest.yml добавьте раздел env и создайте переменную с именем JAVA_OPTS.
- Добавьте конфигурацию удаленного отладчика в переменную JAVA_OPTS:
-agentlib:jdwp=transport=dt_socket,address=YOUR-IP-ADDRESS:YOUR-PORT
, - Сохраните файл manifest.yml.
- Запустите cf push.
По завершении вы должны увидеть, что ваше приложение запущено и теперь подключено к отладчику, запущенному в вашей IDE. Теперь вы можете добавлять точки останова и опрашивать приложение так же, как если бы оно работало локально.