Windows Azure & Java. Использование Service Runtime Library. (ru-RU)Цикл "Windows Azure & Java": ТеорияWindows Azure SDK For Java предоставляет библиотеку Windows Azure Service Runtime, позволяющую взаимодействовать приложению, написанному на Java, со средой Windows Azure (локальным эмуляторм или облаком) и получать информацию о развертывании (информацию о состоянии ролей, экземпляров и т.д.), а также запрашивать и задавать некоторые значения, включая запросы на “очистку” экземпляров роли. К основным классам данной библиотеки относятся: * RoleEnvironment * RoleInstance * Role Всего в библиотеке гораздо больше классов, которые можно изучить на MSDN . Рассмотрим подробнее каждый из классов. RoleEnvironmentДанный класс является отображением среды выполнения Windows Azure, в которой работает экземпляр вашего приложения. Класс предоставляет следующую функциональность (список неполон):
static void static Map <String ,String > static RoleInstance static String static Map <String ,LocalResource > static Map <String ,Role > static boolean Определяет, запущено ли приложение в облаке или нет. Возвращает true, если да. Если возвращается false, запрещено использовать любые части класса RoleEnvironment (будет выброшено исключение RoleEnvironmentAvailableException). static boolean static void static void RoleInstance Класс RoleInstance является отображением конкретного экземпляра роли и содержит в себе следующую функциональность: getFaultDomain () String Map <String ,RoleInstanceEndpoint > Role int RoleКласс Role является отображением роли в вашем приложении. Роли (веб-роль, воркер-роль) определяются в файле определения сервиса. Класс содержит всего два метода: Map <String ,RoleInstance > String Межклассовые отношения RoleEnvironment, Role, RoleInstance
Кроме вышеперечисленных классов библиотека имеет дополнительную функциональность, которая может быть полезна при разработке облачного приложения. К этой функциональности относятся некоторые классы: * RoleInstanceEndpoint. Данный класс отображает точку входа для экземпляра роли и содержит следующие методы: InetSocketAddress String RoleInstance * RoleEnvironmentChangedEvent. Данный класс отображает событие, которое совершается во время изменения конфигурации сервиса. Содержит один метод: Collection <RoleEnvironmentChange > * RoleEnvironmentConfigurationSettingChange . Данный класс является отображением изменения конфигурации и содержит один метод: String * RoleEnvironmentTopologyChange отображает изменение топологии сервиса. Топология сервиса – количество экземпляров для роли. Содержит один метод: String * RoleInstanceStatus . Данное перечисление (enum) является отображением статуса экземпляра роли и содержит две константы: Busy Ready ПрактикаДля разработки на Java для платформы Windows Azure необходимо иметь: 1) Java Developer Kit не ниже 1.6 (под 1.7 данное руководство не тестировалось) 2) Windows Azure SDK. 3) Необходимые библиотеки Java. Можно скачать и подключить к проекту либо вручную, либо с помощью Maven, либо установив плагин к Eclipse. Ссылки: https://msdn.microsoft.com/en-us/library/windowsazure/hh690953(v=vs.103).aspx 4) Аккаунт Windows Azure. 5) Дистрибутив Tomcat 7-й версии. Имея все 5 позиций, вы можете начать разрабатывать ваши проекты либо переносить уже существующие в облако. В первой статье цикла я приводил настройки проекта. Для дальнейшей работы можно работать прямо из проекта из первой статьи, редактируя лишь файл .JSP. В практической же части мы попробуем выполнить новый код, использующий основные возможности Service Runtime Library, с использованием Tomcat 7. Однако сначала нам необходимо добавить некоторые настройки в нашем проекте. Для этого пройдите следующие шаги. 1) Вызовите окно Properties вашего Java-проекта (не облачного!). 2) Переходим на вкладку Java Build Path и нажимаем Add External JARs. 3) Выбираем скачанные с сайта JAR (рис.7.). Нажимаем Finish. Java-проект с подключенными библиотеками, необходимыми для работы с Windows Azure, создан. Теперь нам необходимо добавить библиотеки в сборку развертывания. Для этого: снова вызовите окно свойств Properties вашего Java-проекта и перейдите на вкладку Deployment Assembly, после чего нажмите Add и в появившемся диалоге New Assembly Directive нажмите Java Build Path Entries. Next. Теперь откройте JSP-файл, который вы должны отредактировать в соответствии с кодом ниже.
Соберите проект – Project => Build Project. После этого вам необходимо экспортировать пакет Java-проекта. Для этого кликните правой кнопкой мыши на проекте AzureLocApp и нажмите Export=>WAR File. В появившемся диалоговом окне нажмите Browse и выберите папку approot проекта Windows Azure. Соберите облачный проект – Project=> Build Project. В окне в нижней части среды разработки должен появиться лог сборки. Убедитесь, что сборка прошла без проблем. Возможно, вам придется вручную запустить Windows Azure Emulator, иначе возможно появление ошибок. Из вашего проекта запустите RunInEmulator.cmd. После того, как вы запустите файл, произойдет развертывание проекта в локальный эмулятор вычислений Windows Azure. Откройте графический интерфейс локального эмулятора вычислений. Нажмите на WorkerRole1 и выберите 0. Это экземпляр нашей роли. Вы должны увидеть статус Busy. В это время запускается веб-сервер. Если он сразу не запустился, подождите – это занимает какое-то время. После запуска веб-сервера зайдите в веб-браузере на https://localhost:8080/AzureLocApp , чтобы увидеть нашу страницу.. Таким образом, мы увидели, как можно взаимодействовать со средой выполнения локального эмулятора из Java-приложения. Аналогичным образом осуществляется взаимодействие с облачной средой. |