Удаленная отладка приложения Bluemix CF Java buildpack

У меня есть автономное Java-приложение, развернутое в IBM Bluemix в виде пакета компоновки Java Cloud Foundry.

Есть ли способ выполнить удаленную отладку в Eclipse? Я мог найти только документы для удаленной отладки приложений Java Liberty buildpack.

2 ответа

Способ прослушивания сокетов, упомянутый в другом ответе, безусловно, удобен, но предполагает, что вам назначен общедоступный IP-адрес вашей машине отладки (или вам необходимо настроить переадресацию портов на маршрутизаторе). Это не всегда возможно.

Поэтому другой способ сделать это - включить отладку в приложении Java и использовать переадресацию порта ssh для подключения к экземпляру приложения. Ниже приведены шаги

  1. Включите отладку Java, установив переменную среды JBP_CONFIG_DEBUG со значением {enabled: true} и перезапустить приложение.
  2. Настройте туннель SSH для инфраструктуры отладки через JDWP

    cf ssh -N -T -L 8000:localhost:8000 <APP_NAME>

  3. После открытия туннеля 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

  1. Откройте свой проект в Eclipse.
  2. Щелкните правой кнопкой мыши по вашему проекту, перейдите к "Отладка как" и выберите "Конфигурации отладки".
  3. Создайте новое удаленное Java-приложение.
  4. Убедитесь, что ваш проект выбран, выберите Standard (Socket Listen) из выпадающего списка Connection Type и установите порт. Убедитесь, что этот порт открыт, если вы используете брандмауэр.
  5. Нажмите Отладка.

Теперь отладчик должен быть запущен. Если вы переключитесь на перспективу Debug, вы должны увидеть свое приложение в списке на панели Debug и оно должно сказать Waiting for vm to connect at port,

Затем перенесите ваше приложение в Cloud Foundry и дайте команду Cloud Foundry подключиться к отладчику, работающему на вашем локальном компьютере, используя следующие инструкции:

  1. Отредактируйте ваш файл manifest.yml. Установите количество экземпляров равным 1. Если вы установите значение больше одного, несколько приложений попытаются подключиться к вашему отладчику.
  2. Также в manifest.yml добавьте раздел env и создайте переменную с именем JAVA_OPTS.
  3. Добавьте конфигурацию удаленного отладчика в переменную JAVA_OPTS: -agentlib:jdwp=transport=dt_socket,address=YOUR-IP-ADDRESS:YOUR-PORT,
  4. Сохраните файл manifest.yml.
  5. Запустите cf push.

По завершении вы должны увидеть, что ваше приложение запущено и теперь подключено к отладчику, запущенному в вашей IDE. Теперь вы можете добавлять точки останова и опрашивать приложение так же, как если бы оно работало локально.

Другие вопросы по тегам