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) с установленным плагином.
После скачивания и распаковки Eclipse запускаем среду разработки. Перед нами появляется рабочая область среды разработки. Вызываем Help=>Eclipse Marketplace и вводим в строку поиска (рис.1).
Рис.1. Рабочая область Eclipse Indigo.
В появившемся окне Install вводим адрес репозитория http://dl.windowsazure.com/eclipse в соответствующее окно ввода (Work with), после чего нажимаем Add (рис. 2.).
Рис.2. Добавление репозитория проекта плагин�� Windows Azure.
В нижнем окне после загрузки списка содержимого репозитория возникнет выпадающую “ветку” Windows Azure Toolkit For Java. В данной ветке содержится два основных проекта – Microsoft JDBC Driver 3.0 for SQL Server (для работы с хранилищем, в том числе SQL Azur) и собственно пакет плагина. Отмечаем всю ветку и нажимаем Next.
В зависимости от скорости Интернета и доступности репозитория загрузка может занять до нескольких минут (рис. 3).
Рис.3. Установка плагина.
После загрузки необходимых метаданных появится окно настроек (рис 3.1.).
Рис.3.1.
Нажимаем Next и в следующем окне соглашаемся с лицензионным соглашением, после чего нажимаем Finish.
После установки плагина вам предложат перезагрузить Eclipse. Согласитесь.
-------------------
В данном руководстве мы будем вручную подключать библиотеки. Для этого необходимо скачать соответствующие библиотеки и зависимости со страницы http://msdn.microsoft.com/en-us/library/windowsazure/hh690953(v=vs.103).aspx.
Создаём в Eclipse Java-проект (рис.4.).
Рис.4. Создание Java-проекта.
Вводим необходимые сведения в появившемся диалоговом окне. Достаточно ввести имя проекта (рис.5.).
Рис.5. Настройки проекта.
��ажимаем Next. На странице Java Settings переходим на вкладку Libraries и нажимаем External JARs.
Рис.6. Добавление библиотек.
Выбираем скачанные с сайта JAR (рис.7.).
Рис.7. Выбор библиотек.
Нажимаем Finish.
Java-проект с подключенными библиотеками, необходимыми для работы с Windows Azure, создан.
---------------------------
Для создания нашего проекта сначала необходимо создать Java-проект. Для этого нажмите в Eclipse CTRL+N и выберите Dynamic Web Project.
Рис. 8.
На странице настроек нового проекта введите соответствующие данные – выберите веб-сервер (в нашем случае это Tomcat 7.0), название проекта. Нажмите Finish.
Рис.9. Настройки проекта.
Структура вашего приложения должна выглядеть как на рис.10.
Ри��. 10. Структура проекта.
Основная папка, которая нас интересует – WebContent. В ней мы будем хранить наш основной JSP-файл.
Щелкните правой кнопкой мыши на папке WebContent и нажмите New=>JSP File. В появившемся диалоговом окне введите имя файла Index.jsp и нажмите Next. На странице Select JSP Template выберите шаблон проекта New JSP File (html) и нажмите Finish.
Рис.11. Выбор шаблона для JSP-файла.
Введите в появившемся окне редактора в контейнере <body> Hello Azure:
<body> Hello Azure. </body>
Нажмите CTRL+S для сохранения изменений.
Для создания Java-проекта Windows Azure нажмите в Eclipse CTRL+N и найдите вкладку Windows Azure, после чего два раза кликните на Windows Azure Project, чтобы инициировать создание проекта (рис.12).
Рис. 12. Создание Windows Azure проекта.
Откроется окно настроек создаваемого проекта. Обратите внимание на уже существующие настройки, после чего нажмите Finish – для первого проекта мы можем ограничиться настройками по умолчанию (рис.13).
Рис. 13. Настройки проекта Windows Azure.
Теперь нам необходимо экспортировать пакет Java-проекта. Для этого кликните правой кнопкой мыши на проекте AzureLocApp и нажмите Export=>WAR File. В появившемся диалоговом окне нажмите Browse и выберите папку approot проекта Windows Azure (рис. 14.).
Рис.14. Экспорт пакета проекта.
Далее нам необходимо положить JDK и Tomcat в папку approot облачного проекта. Для этого просто заархивируйте соответствующие папки в ZIP и положите их в папку approot (рис.15.). Поскольку платформа Windows Azure использует 64-битную архитектуру, вам необходимо использовать в своем приложении 64-битную соответствующую версию Java Development Kit. Кроме этого, необходимо отметить, что для разработки на локальной инфраструктуре на Java вам, что является логичным выводом, необходимо использовать 64-битную операционную систему.
Рис. 15.
Теперь нам необходимо настроить скрипт запуска всей нашей инфраструктуры в облаке. Для этого раскройте папку samples в облачном проекте и выберите текстовый файл, соответствующий tomcat7, после чего скопируйте его содержимое в файл startup.cmd (рис.16).
Рис. 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, иначе возможно появление ошибок.
Рис. 17. Ошибка эмулятора.
Рис.17. Лог без ошибок.
Перейдите в папку вашего проекта и запустите RunInEmulator.cmd (рис.18).
Рис. 18.
После того, как вы запустите файл, произойдет развертывание проекта в локальный эмулятор вычислений Windows Azure. Откройте графический интерфейс локального эмулятора вычислений (рис 19,20).
Рис. 19.
Рис. 20. Интерфейс эмулятора вычислений.
Нажмите на WorkerRole1 и выберите 0. Это экземпляр нашей роли (рис. 21).
Рис. 21. Лог экземпляра роли.
Вы должны увидеть статус Busy. В это время запускается веб-сервер. Если он сразу не запустился, подождите – это занимает какое-то время.
После запуска веб-сервера (рис. 22) зайдите в веб-браузере на http://localhost:8080/AzureLocApp, чтобы увидеть нашу страницу (рис. 23).
Рис. 22. Успешный запуск веб-сервера.
Рис. 23. Веб-страница в локальном эмуляторе вычислений.
Мы протестировали проект и он работает. Теперь необходимо выложить его в облако. Для этого мы проведем небольшую настройку конфигурации и затем загрузим его в аккаунт Windows Azure.
Щелкните правой кнопкой мыши на облачном проекте Windows Azure и нажмите Properties. В окне свойств перейдите на вкладку Windows Azure (рис. 24).
Рис. 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 точек входа в сервис.
Примечание: Портал производит пр��верку доступности и соответствия правилам имени. Если имя не пройдёт проверку, будет выведено сообщение об ошибке.
Рис. 25. Добавление нового сервиса.
Как вы видите, нам доступно разве��тывание нашего сервиса в облако сразу же при создании сервиса-контейнера. Нажмите Browse Locally для обоих файлов и найдите их в папке deploy вашего проекта.
Рис. 26.
При нажатии OK вам будет выведено предупреждение о том, что для выполнения SLA необходимо как минимум два экземпляра для роли. Нажмите Close и Ok.
Дождитесь окончания развертывания роли. Во время развертывания происходит весь процесс установки вашего приложения: ищется свободное оборудование, сервис загружается на портал, создаётся и разворачивается виртуальная машина, на неё загружается сервис, после чего происходит инициирование событий OnStartup и Run – в событии OnStartup запускается веб-сервер и JDK, необходимые для выполнения нашего приложения, в событии-методе Run происходит основная логика приложения. Обратите внимание, что приложение занимает достаточно много мегабайт, поэтому загрузка, скорее всего, займет минут 20-30.
Рис. 27.
Убедитесь, что развертывание прошло успешно и имеет статус Ready.
Рис. 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 для удаления сервиса.