Поделиться через


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 для удаления сервиса.