Статьи

Запуск Java-приложения Jena в Azure Cloud: часть 1

Методы, обсуждаемые в этом посте, демонстрируются в рамках проекта Visual Studio:

Jena — это Java-приложение, и поэтому оно может легко выполняться в рабочей роли Azure. Как правило, любое сложное облачное приложение будет иметь различные роли, однако, этот учебник предназначен только для того, чтобы заставить шарик катиться с самой простой вещью, которая может работать. Мы развернем Tomcat с помощью простого приложения Jena, которое загружает rdf с общедоступных конечных точек и позволяет запрашивать загруженные данные. Кроме того, мы будем использовать облачное хранилище Azure для поддержки постоянного тройного хранилища с резервной копией TDB .

Prerequisits

В этом сообщении предполагается, что у вас есть учетная запись Azure. Кроме того, вам нужно будет выделить один размещенный сервис и один сервис хранения. Размещенная служба будет выполнять нашу рабочую роль, которая фактически является экземпляром Windows Server 2008 по требованию. Служба хранения будет действовать как облачный диск, на который TDB будет записывать свои файлы. Вам понадобится либо Windows Vista, либо Windows 7, копия Visual Studio (2008 или 2010), и Windows Azure SDK . Более подробную информацию о начале работы с Windows Azure можно найти здесь .

Проект рабочей роли

Все проекты Windows Azure начинаются либо с веб-роли (приложение .Net IIS), либо с более общей рабочей роли. В нашем случае мы используем рабочую роль. В примере проекта есть четыре вещи, на которые я хочу обратить внимание. Во-первых, мы загружаем tomcat вместе с полной JRE в рабочую роль. Например, одна из запущенных рабочих ролей предполагает поиск tomcat / bin / catalina.bat, а также tomcat / jre / bin / java.exe. Первое, что радует, когда создается рабочая роль, — это вызов RoleEntryPoint.OnStart () и RoleEntryPoint.Run (). Мы рассмотрим их немного подробнее, а пока просто заметим, что они определены с помощью WorkerRole.cs. Во время запуска каталог tomcat копируется в доступный для записи локальный каталог. Это происходит в setup.bat. Наконец, все порты в Windows Azure являются динамическими.В конфигурации роли мы можем указать, что наше веб-приложение будет взаимодействовать через порт 80, однако внутри мы будем работать с ролью, которая будет работать с динамическим портом, назначенным во время выполнения. Это требует обновления конфигурации Tomcat, которая происходит в RunTomcat.cs. Подвести итоги:

  1. двоичные файлы tomcat вместе с JRE включены в проект и в конечном итоге упакованы и развернуты в рабочей роли.
  2. WorkerRole.cs обрабатывает события запуска.
  3. setup.bat копирует каталог tomcat на доступный для записи локальный диск. Это важно для создания файла журнала.
  4. RunTomcat.cs обрабатывает динамическую конфигурацию порта HTTP и другие аспекты запуска процесса tomcat.

Монтирование облачного диска

Пример проекта в основном идентичен Azure Tomcat Acclerator (с небольшими улучшениями). Наиболее значительным изменением является то, что в моем примере монтируется облачный диск, на который мы будем монтировать экземпляр Jena TDB. Процесс монтирования происходит внутри события Run () (WorkerRole.cs). Этот метод может быть легко извлечен из этого проекта и использован в другом месте.

Важно знать, что облачный диск монтируется с использованием настроек конфигурации, которыми можно легко управлять с помощью редактора конфигурации ролей Visual Studio. Вы предоставите свой собственный секретный ключ и имя учетной записи. Также облачный диск должен быть настроен как HTTP-соединение. В примере проекта см. Файл исходного кода RunTomcat.cs. В этом файле мы берем букву динамического диска, назначенную во время выполнения, и предоставляем ее настройкам среды процесса, где Йена сможет найти ее позже:

newProc.StartInfo.EnvironmentVariables.Remove("DRIVE");
newProc.StartInfo.EnvironmentVariables.Add("DRIVE", drive);

Казалось бы, тривиальный, и все же, конечно, не обычный. Большинство развертываний Tomcat и Jena могут использовать определенный путь к каталогу. Это не так в облаке, где все распределяется динамически.

Опубликовать и запустить Tomcat

В Visual Studio попал в сборку-> опубликовать. Это создаст два файла, один из которых будет полностью упакован и готов к запуску в Azure вместе с файлом конфигурации. Вы можете обновить свою конфигурацию, например, вы можете запустить Jena в более крупной системе. Я бы не советовал запускать этот конкретный пример для более чем одной роли, поскольку для полностью масштабируемой установки потребуется две роли: одна для веб-уровня и одна для данных. Мы оставим это как (todo: создать продвинутую архитектуру jena с читателями в очереди и публикацией веб-ролей). В моем следующем посте я представлю простой проект Jena. Мы будем использовать собственную функцию публикации WAR Tomcat для передачи приложения в нашу службу Azure, уменьшая количество бит в начальной загрузке и позволяя вносить простые изменения в приложение Jena, не отключая нашу облачную службу.