Skip to content
March 16, 2012 / ahriman hpc mode

Windows Azure & Java. Вопросы отладки Java-приложений.

——-
Цикл "Windows Azure & Java":

Windows Azure, приложение на Java "Hello World" с использованием JDK 1.6 и Tomcat 7.
Windows Azure, приложение на Java "Hello World" с использованием JDK 1.6 и Glassfish 3Windows Azure, приложение на Java. Service Runtime Library

Вопросы отладки Java-приложений.
——-

 

В первой статье цикла был создан проект, поэтому этого касаться в данной статье я не буду.

Плагин Windows Azure для интегрированной среды разработки Eclipse позволяет в числе своих возможностей отлаживать приложения как в локальном эмуляторе, так и в облаке. Для того, чтобы сконфигурировать проект для использования отладки, необходимо щелкнуть правой кнопкой мыши на вашей роли (с синей шестеренкой) и вызвать окно Properties (рис.1.), где необходимо перейти на вкладку Windows Azure, после чего на вкладку Debugging, где отметить опцию Enable remote debugging for this role. Панель позволяет выбрать также точку входа, по которой будет происходить отладка приложения, и другие опции – такие, как ожидание приложения до входа отладчика и т.д. Немного подробнее про Start JVM in suspended mode, waiting for a debugger connection: данная опция предназначена только для некоторых ситуаций, связанных с локальным эмулятором – с помощью ее можно задержать запуск сервера до тех пор, пока отладчик Eclipse не подключится к соответствующей JVM. Откройте меню Windows Azure Debug Configuration и выберите свой проект в Java project to debug, после чего убедитесь, что Configure debugging for указан в значение Windows Azure compute emulator. Закройте диалог и окно Properties.

image

Рис.1. Свойства роли.

Теперь можно переходить к непосредственному процессу отладки в локальном эмуляторе. Сначала необходимо отметить точку прерывания (breakpoint). Для этого:

  1. Разверните папку WebContent вашего приложения и откройте какой-либо файл (в моем случае это NewFile.jsp).
  2. На какой-либо строке щелкните в серой панели справа правой кнопкой мыши и нажмите Toggle Breakpoints. В моем случае я поставил две точки прерывания на строках получения локальных зарезервированных ресурсов хранилища (рис.2) и получения настроек конфигурации.

Map<String, LocalResource> localresources = RoleEnvironment.getLocalResources();

Map<String, String> mapConfigSettings = RoleEnvironment.getConfigurationSettings();

 

image

Рис. 2. Установка точки прерывания.

После установки точки прерывания появится соответствующий значок (рис.3).

image

Рис.3.

Теперь необходимо собрать проект – Build => Build project. После этого появится папка emulatorTools, в которой необходимо сначала запустить (на всякий случай) ResetEmulator.cmd (среда локального эмулятора будет очищена и остановлена), после чего RunInEmulator.cmd.

После окончания процесса запуска необходимо соответствующим образом сконфигурировать конфигурацию отладки. Для этого:

1) В меню нажмите на иконке стрелки справа от значка жука и выберите Debug Configurations (рис. 4.).

image

Рис. 4. Открытие окна конфигурации отладки.

2) Разверните вкладку Remote Java Applications и выберите Windows Azure Emulator (WorkerRole1) (рис. 5.). Убедитесь, что выбран режим Socket Attach! После чего Нажмите Debug.

image

Рис. 5. Окно конфигураций отладки.

Как только процесс будет завершен, перейдите на страницу JSP в браузере. В моем случае это http://localhost:8080/AzureLocApp/NewFile.jsp. При открытии обратите внимание, что Eclipse предложит поменять перспективу (рис. 6.). Согласитесь.

image

Рис. 6.

У вас должна открыться перспектива отладки (рис. 7.).

image

Рис. 7. Перспектива отладки Java-приложения в Eclipse.

Вам доступна полная функциональность Eclipse по отладке. Нажмите F8 (Resume) и просмотрите данные, которые предоставляет вам среда разработки.

Отладка в облаке Windows Azure

Нажмите два раза на файле ResetEmulator для уничтожения  вашего развертывания в локальном эмуляторе.

Необходимо отметить, что отладка в данный момент предназначена для целей отладки в локальном эмуляторе, так как ничем не обезопасена. Поэтому не включайте отладку при развертывании в реальном развертывании.

Для настройки проекта для облачной отладки сначала сконфигурируйте сборку проекта для облачной сборки (окно Properties облачного проекта, вкладка Windows Azure, Build for, рис. 8). Нажмите Project->Build all.

image

Рис. 8. Конфигурация сборки проекта для облака.

Вернитесь к первому абзацу и в окне Properties сконфигурируйте Build for как Deployment to cloud. В этом же диалоге сконфигурируйте значение Host (оно должно быть равно DNS-имени вашего тестового развертывания без http://) (рис. 9). DNS-имя развертывания можно получить, зайдя на портал управления Windows Azure и выбрав ваше развертывание. В панели Properties вы увидите свойство DNS name (рис. 10).

 

image

Рис. 9. Конфигурация облачной отладки.

image

Рис. 10. Панель свойств тестового развертывания.

Закройте диалог и окно Properties вашего проекта и соберите проект (Project –> Build all). Далее загрузите пакет и конфигурационный файл в развертывание в облаке. В том случае, если у вас не создано развертывание, обратитесь к первой статье цикла. В том случае, если hosted service  уже создан, перейдите на портал управления Windows Azure. Выберите тестовое развертывание и нажмите кнопку Upgrade (рис. 11).

image

Рис. 11. Портал управления Windows Azure.

В появившемся диалоге (рис. 12) выберите ваши пакет сервиса и конфигурационный файл, нажав Browse Locally и найдя необходимые файлы в папке deploy вашего облачного проекта.

image

Рис. 12. Обновление пакета сервиса и файла конфигурации для тестового развертывания.

Дождитесь окончания процесса развертывания вашего проекта. После этого в меню нажмите на иконке стрелки справа от значка жука и выберите Debug Configurations Разверните вкладку Remote Java Applications и выберите Windows Azure Cloud (WorkerRole1) (рис. 13.). Убедитесь, что выбран режим Socket Attach! После чего Нажмите Debug.

image

Рис. 13. Окно конфигураций отладки.

Как только процесс будет завершен, перейдите на страницу JSP в браузере. В моем случае это http://8eee90deb9394d98bfc4979a9f7fabcd.cloudapp.net/AzureLocApp/NewFile.jsp. При открытии обратите внимание, что Eclipse предложит поменять перспективу (рис. 6.). Согласитесь.

Обратите внимание, что, если вы активировали отладку для развертывания, у которого имеется множество запущенных экземпляров, возможности контролировать, к какому из экземпляров будет подключен отладчик, нет, так как балансировщик нагрузки посылает запрос экземпляру случайным образом. В том случае, если вы не предпринимаете никаких действий по отладке, отладочное подключение будет отключено через 4 минуты со стороны Windows Azure.

Для того, чтобы совершить все те же самые действия по настройке отладки, но с GlassFish, вам необходимо будет сконфигурировать GlassFish вручную, не трогая конфигурацию плагина Windows Azure для Eclipse.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: