Windows Azure, приложение на Java "Hello World" с использованием JDK 1.6 и Tomcat 7.(ru-RU)
——- ** Цикл "Windows Azure & Java": Windows Azure, приложение на Java "Hello World" с использованием JDK 1.6 и Tomcat 7. Windows Azure, приложение на Java "Hello World" с использованием JDK 1.6 и Glassfish 3 Windows Azure, приложение на Java. Service Runtime Library Вопросы отладки Java-приложений. Дополнительные возможности. Remote Desktop, Session Affinity. Windows Azure & Java. Основы хранилища. Блобы. Доступ из локального приложения. Windows Azure & Java. Основы хранилища. Очереди. Доступ из локального приложения. Windows Azure & Java. Что такое Service Bus и как её использовать из Java-приложения. Часть 1. Windows Azure & Java. Что такое Service Bus и как её использовать из Java-приложения. Часть 2. Топики. ——-**
Для разработки на Java для платформы Windows Azure необходимо иметь:
1) Java Developer Kit не ниже 1.6 (под 1.7 данное руководство не тестировалось)
2) Windows Azure SDK.
3) Необходимые библиотеки Java. Можно скачать и подключить к проекту либо вручную, либо с помощью Maven, либо установив плагин к Eclipse. Ссылки: http://msdn.microsoft.com/en-us/library/windowsazure/hh690953(v=vs.103).aspx
4) Аккаунт Windows Azure.
5) Дистрибутив Tomcat 7-й версии.
Имея все 5 позиций, вы можете начать разрабатывать ваши проекты либо переносить уже существующие в облако.
В данном руководстве будет использоваться среда разработки Eclipse Indigo (http://eclipse.org) с установленным плагином.
1. Установка плагина.
После скачивания и распаковки Eclipse запускаем среду разработки. Перед нами появляется рабочая область среды разработки. Вызываем Help=>Eclipse Marketplace и вводим в строку поиска (рис.1).
http://hpcru.files.wordpress.com/2012/03/image_thumb4.png
Рис.1. Рабочая область Eclipse Indigo.
В появившемся окне Install вводим адрес репозитория http://dl.windowsazure.com/eclipse в соответствующее окно ввода (Work with), после чего нажимаем Add (рис. 2.).
http://hpcru.files.wordpress.com/2012/03/image_thumb5.png
Рис.2. Добавление репозитория проекта плагин�� Windows Azure.
В нижнем окне после загрузки списка содержимого репозитория возникнет выпадающую “ветку” Windows Azure Toolkit For Java. В данной ветке содержится два основных проекта – Microsoft JDBC Driver 3.0 for SQL Server (для работы с хранилищем, в том числе SQL Azur) и собственно пакет плагина. Отмечаем всю ветку и нажимаем Next.
В зависимости от скорости Интернета и доступности репозитория загрузка может занять до нескольких минут (рис. 3).
http://hpcru.files.wordpress.com/2012/03/image_thumb6.png
Рис.3. Установка плагина.
После загрузки необходимых метаданных появится окно настроек (рис 3.1.).
http://hpcru.files.wordpress.com/2012/03/image_thumb7.png
Рис.3.1.
Нажимаем Next и в следующем окне соглашаемся с лицензионным соглашением, после чего нажимаем Finish.
После установки плагина вам предложат перезагрузить Eclipse. Согласитесь.
1. Альтернатива. Подключение библиотек вручную.
В данном руководстве мы будем вручную подключать библиотеки. Для этого необходимо скачать соответствующие библиотеки и зависимости со страницы http://msdn.microsoft.com/en-us/library/windowsazure/hh690953(v=vs.103).aspx.
Создаём в Eclipse Java-проект (рис.4.).
http://hpcru.files.wordpress.com/2012/03/image_thumb8.png
Рис.4. Создание Java-проекта.
Вводим необходимые сведения в появившемся диалоговом окне. Достаточно ввести имя проекта (рис.5.).
http://hpcru.files.wordpress.com/2012/03/image_thumb9.png
Рис.5. Настройки проекта.
��ажимаем Next. На странице Java Settings переходим на вкладку Libraries и нажимаем External JARs.
http://hpcru.files.wordpress.com/2012/03/image_thumb10.png
Рис.6. Добавление библиотек.
Выбираем скачанные с сайта JAR (рис.7.).
http://hpcru.files.wordpress.com/2012/03/image_thumb11.png
Рис.7. Выбор библиотек.
Нажимаем Finish.
Java-проект с подключенными библиотеками, необходимыми для работы с Windows Azure, создан.
2. Создание Java-проекта.
Для создания нашего проекта сначала необходимо создать Java-проект. Для этого нажмите в Eclipse CTRL+N и выберите Dynamic Web Project.
http://hpcru.files.wordpress.com/2012/03/image_thumb12.png
Рис. 8.
На странице настроек нового проекта введите соответствующие данные – выберите веб-сервер (в нашем случае это Tomcat 7.0), название проекта. Нажмите Finish.
http://hpcru.files.wordpress.com/2012/03/image_thumb13.png
Рис.9. Настройки проекта.
Структура вашего приложения должна выглядеть как на рис.10.
http://hpcru.files.wordpress.com/2012/03/image_thumb14.png
Ри��. 10. Структура проекта.
Основная папка, которая нас интересует – WebContent. В ней мы будем хранить наш основной JSP-файл.
Щелкните правой кнопкой мыши на папке WebContent и нажмите New=>JSP File. В появившемся диалоговом окне введите имя файла Index.jsp и нажмите Next. На странице Select JSP Template выберите шаблон проекта New JSP File (html) и нажмите Finish.
http://hpcru.files.wordpress.com/2012/03/image_thumb15.png
Рис.11. Выбор шаблона для JSP-файла.
Введите в появившемся окне редактора в контейнере <body> Hello Azure:
<body>
Hello Azure.
</body>
Нажмите CTRL+S для сохранения изменений.
3. Создание проекта Windows Azure.
Для создания Java-проекта Windows Azure нажмите в Eclipse CTRL+N и найдите вкладку Windows Azure, после чего два раза кликните на Windows Azure Project, чтобы инициировать создание проекта (рис.12).
http://hpcru.files.wordpress.com/2012/03/image_thumb16.png
Рис. 12. Создание Windows Azure проекта.
Откроется окно настроек создаваемого проекта. Обратите внимание на уже существующие настройки, после чего нажмите Finish – для первого проекта мы можем ограничиться настройками по умолчанию (рис.13).
http://hpcru.files.wordpress.com/2012/03/image_thumb17.png
Рис. 13. Настройки проекта Windows Azure.
Теперь нам необходимо экспортировать пакет Java-проекта. Для этого кликните правой кнопкой мыши на проекте AzureLocApp и нажмите Export=>WAR File. В появившемся диалоговом окне нажмите Browse и выберите папку approot проекта Windows Azure (рис. 14.).
http://hpcru.files.wordpress.com/2012/03/image_thumb18.png
Рис.14. Экспорт пакета проекта.
Файл | Назначение |
ServiceConfiguration.cscfg | Файл конфигурации сервиса Windows Azure. |
ServiceDefinition.csdef | Файл настройки сервиса Windows Azure. |
package.xml | Конфигурационный файл. |
WorkerRole1\approot\HelloWorld.war | Пример, поставляемый по умолчанию, который можно использовать для тестов. |
WorkerRole1\approot\startup.cmd | Скрипт, содержащий директивы, выполняющиеся при старте экземпляра. |
samples | Примеры установки и настроек приложений, работающих под управлением различных серверов для Java (Tomcat, JBoss, GlassFish). |
WorkerRole1\approot\run.cmd | Скрипт, содержащий директивы для выполнения различных действий во время выполнения приложения (в его рабочем состоянии). |
WorkerRole1\approot\util\unzip.vbs | Скрипт, распаковывающий ZIP-архивы, идущие с сервисом (в том случае, если у вас есть ZIP-архивы, необходимые для запуска приложения). |
WorkerRole1\approot\util\whileproc.cmd |
Скрипт, который можно использовать для того, чтобы указывать, что запущенное приложение работает. Работает аналогично "пульсу" приложения. |
WorkerRole1\RoleModel.xml | Файл, содержащий конфигурацию данной роли. Содержит в себе настройки, касающиеся выполнения скриптов при наступлении определенного события (допустим, входа в роль - EntryPoint), задачи и т.д. |
WorkerRole1\approot\util download.vbs | Скрипт, в котором происходит загрузка необходимых файлов. Этот файл и соответствующие директивы в startup.vbs можно использовать в том случае, если вы не хотите включать дистрибутивы необходимых приложений (веб-сервера и так далее) в поставку вашего приложения. В этом случае при запуске дистрибутив будет скачиваться и укладываться куда надо. |
cert\SampleRemoteAccessPrivate.pfx | Самоподписанный сертификат с приватным ключом, который можно использовать для Windows Azure, например, в случае необходимости использования Remote Desktop для подключения к экземплярам выполняющихся ролей. |
cert\SampleRemoteAccessPublic.cer | Самоподписанный сертификат с публичным ключом. Необходимо использовать вместе с сертификатом с приватным ключом. |
ServiceDefinition.rd и ServiceDefinition.rdsc | Файлы настроек конфигурации, касающиеся точек входа для подключения по Remote Desktop. |
Далее нам необходимо положить JDK и Tomcat в папку approot облачного проекта. Для этого просто заархивируйте соответствующие папки в ZIP и положите их в папку approot (рис.15.). Поскольку платформа Windows Azure использует 64-битную архитектуру, вам необходимо использовать в своем приложении 64-битную соответствующую версию Java Development Kit. Кроме этого, необходимо отметить, что для разработки на локальной инфраструктуре на Java вам, что является логичным выводом, необходимо использовать 64-битную операционную систему.
http://hpcru.files.wordpress.com/2012/03/image_thumb19.png
Рис. 15.
Теперь нам необходимо настроить скрипт запуска всей нашей инфраструктуры в облаке. Для этого раскройте папку samples в облачном проекте и выберите текстовый файл, соответствующий tomcat7, после чего скопируйте его содержимое в файл startup.cmd (рис.16).
http://hpcru.files.wordpress.com/2012/03/image_thumb20.png
Рис. 16.
Замените SET WAR_NAME=HelloWorld.war на SET WAR_NAME=AzureLocApp.war. Также вам доступны некоторые другие конфигурации типа SERVER_DIR_NAME, который необходимо обновить в соответствие с версией веб-сервера, используемого вами. Будьте внимательные - это критично. Кроме этого, тестировавшейся версией, например, Tomcat, является версия 7.0.22, поэтому, если вам не нужна функциональность новых версий, в качестве совместимости рекомендуется использовать версию 7.0.22.
Соберите проект – Project=> Build Project. В окне в нижней части среды разработки должен появиться лог сборки (рис. 17). Убедитесь, что сборка прошла без проблем. Возможно, вам придется вручную запустить Windows Azure Emulator, иначе возможно появление ошибок.
http://hpcru.files.wordpress.com/2012/03/image_thumb21.png
Рис. 17. Ошибка эмулятора.
http://hpcru.files.wordpress.com/2012/03/image_thumb22.png
Рис.17. Лог без ошибок.
Перейдите в папку вашего проекта и запустите RunInEmulator.cmd (рис.18).
http://hpcru.files.wordpress.com/2012/03/image_thumb23.png
Рис. 18.
После того, как вы запустите файл, произойдет развертывание проекта в локальный эмулятор вычислений Windows Azure. Откройте графический интерфейс локального эмулятора вычислений (рис 19,20).
http://hpcru.files.wordpress.com/2012/03/image_thumb24.png
Рис. 19.
http://hpcru.files.wordpress.com/2012/03/image_thumb25.png
Рис. 20. Интерфейс эмулятора вычислений.
Нажмите на WorkerRole1 и выберите 0. Это экземпляр нашей роли (рис. 21).
http://hpcru.files.wordpress.com/2012/03/image_thumb26.png
Рис. 21. Лог экземпляра роли.
Вы должны увидеть статус Busy. В это время запускается веб-сервер. Если он сразу не запустился, подождите – это занимает какое-то время.
После запуска веб-сервера (рис. 22) зайдите в веб-браузере на http://localhost:8080/AzureLocApp, чтобы увидеть нашу страницу (рис. 23).
http://hpcru.files.wordpress.com/2012/03/image_thumb27.png
Рис. 22. Успешный запуск веб-сервера.
http://hpcru.files.wordpress.com/2012/03/image_thumb28.png
Рис. 23. Веб-страница в локальном эмуляторе вычислений.
4. Развертывание проекта в облако.
Мы протестировали проект и он работает. Теперь необходимо выложить его в облако. Для этого мы проведем небольшую настройку конфигурации и затем загрузим его в аккаунт Windows Azure.
Щелкните правой кнопкой мыши на облачном проекте Windows Azure и нажмите Properties. В окне свойств перейдите на вкладку Windows Azure (рис. 24).
http://hpcru.files.wordpress.com/2012/03/image_thumb29.png
Рис. 24. Настройка облачного проекта для развертывания в облако.
На вкладке Windows Azure выберите Deployment to cloud. На вкладке Remote Access снимите галочку – таким образом вы отключите удаленный доступ к вашей роли, что сейчас не нужно, так как это связано с загрузкой сертификата безопасности. Закройте окно конфигурации и пересоберите проект (Project => Build All). В этот момент будут созданы необходимые для развертывания в облако файлы, находящиеся в папке deploy вашего проекта.
Залогиньтесь на портал управления Windows Azure под своим аккаунтом.
Создайте вычислительный сервис, который будет выполнять код вашего приложения. На левой панели нажмите Hosted Services и нажмите кнопку New Hosted Service, расположенную в меню.
В диалоговом окне Create a new Hosted Service выберите вашу подписку из выпадающего списка Choose a subscription.
Введите имя сервиса в текстовое поле Enter a name for your service и укажите URL, введя соответствующее значение Enter a URL prefix for your service, например, <yourname>guestbook, где <yourname> должно быть уникальным именем. Windows Azure использует это значение для создания URL точек входа в сервис.
Примечание: Портал производит пр��верку доступности и соответствия правилам имени. Если имя не пройдёт проверку, будет выведено сообщение об ошибке.
http://hpcru.files.wordpress.com/2012/03/image_thumb30.png
Рис. 25. Добавление нового сервиса.
Как вы видите, нам доступно разве��тывание нашего сервиса в облако сразу же при создании сервиса-контейнера. Нажмите Browse Locally для обоих файлов и найдите их в папке deploy вашего проекта.
http://hpcru.files.wordpress.com/2012/03/image_thumb31.png
Рис. 26.
При нажатии OK вам будет выведено предупреждение о том, что для выполнения SLA необходимо как минимум два экземпляра для роли. Нажмите Close и Ok.
Дождитесь окончания развертывания роли. Во время развертывания происходит весь процесс установки вашего приложения: ищется свободное оборудование, сервис загружается на портал, создаётся и разворачивается виртуальная машина, на неё загружается сервис, после чего происходит инициирование событий OnStartup и Run – в событии OnStartup запускается веб-сервер и JDK, необходимые для выполнения нашего приложения, в событии-методе Run происходит основная логика приложения. Обратите внимание, что приложение занимает достаточно много мегабайт, поэтому загрузка, скорее всего, займет минут 20-30.
http://hpcru.files.wordpress.com/2012/03/image_thumb32.png
Рис. 27.
Убедитесь, что развертывание прошло успешно и имеет статус Ready.
http://hpcru.files.wordpress.com/2012/03/image_thumb33.png
Рис. 28. Успешное развертывание.
Перейдя на уровень развертывания (azurejavatest), обратите внимание на панель свойств справа. В нем доступно DNS-имя развертывания. URL выглядит как <guid>.cloudapp.net, где <guid> - некоторый случайный идентификатор, отличающийся от адреса, который получит приложение при развертывании в реальной среде. Хотя ячейки развертывания и разделены между собой, физических различий между ними нет – все определяется тем, куда подключен балансировщик нагрузки. Попробуйте перейти по ссылке. В том случае, если вы сконфигурировали все правильно, вам должна быть выведена страница вашего сайта. Если появляется окно администраторской панели Tomcat, попробуйте добавить в ссылку имя вашего приложения и указать непосредственно имя файла, допустим:
http://fe744ac908e24c4dafbc2afce3c7f5da.cloudapp.net/AzureLocApp/NewFile.jsp
Определив корректность работы приложения с помощью тестового развертывания, можно переводить его в реальное развертывание. При развертывании приложения в реальной среде Windows Azure перенастраивает балансировщики нагрузки, обеспечивая доступ к приложению по URL реального развертывания.
1. В Hosted Services выберите сервис и нажмите в меню Swap VIP
2. В диалоговом окне Swap VIPs н��жмите OK для перемены местами тестового и реального развертываний.
Нажмите на ссылку DNS name для открытия сайта в реальном развертывании в новом окне браузера и обратите внимание на ссылку в адресной строке браузера.
Примечание: Если вы получаете при входе на сайт DNS-ошибку 404, подождите пару минут и попробуйте еще – возможно, DNS-имя ещё не готово. Windows Azure создает DNS-имена динамически и применение этих изменений может занять несколько минут.
Даже если развертывание находится в статусе suspended, Windows Azure всё ещё держит выделенные для каждого экземпляра виртуальные машины в рабочем состоянии, таким об��азом начисляя за них счёт. После окончания тестирования приложения вам необходимо удалить развертывание из Windows Azure во избежание дополнительных затрат. Чтобы удалить выполняемое развертывание, перейдите в Hosted Services, выберите ячейку развертывания с сервисом, тестовую или реальную, и нажмите в меню Stop. После остановки сервиса нажмите в меню Delete для удаления сервиса.