Перейти к тексту

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Вся введенная информация защищена.

  • Закрыть [x]

При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

Вся введенная информация защищена.

  • Закрыть [x]

Понимание архитектуры размещения Geronimo

Взгляд на понятия конфигурации Geronimo и модели размещения.

Хемапани Сринат Перера , Разработчик, Lanka Software Foundation
Srinath Perera
Сринат Пепера – разработчик Geronimo, опытный разработчик web-служб, J2EE и технологий обработки XML. Сринат принимает активное участие в проекте Apache Web Services как разработчик в проектах WS-FX, Enterprise Web Services (EWS), Axis и Axis 2. Он представляет Axis2 в Комитете Управления Проектом Apache Web Services (the Apache Web Services Project Management Committee). Вы можете написать Сринату на hemapani@gmail.com.

Описание:  Geronimo, открытое программное обеспечение на базе Apache платформы Java 2, J2EE-сервер, интегрирует дюжины технологий и концепций. Большинство из них – самостоятельные проекты, каждый со своей собственной конфигурацией и моделью размещения. Задача Geronimo – собрать эти разнородные системы под один "зонтик", свести различные подходы к конфигурации и размещению в единую, однородную модель. Разработчик Geronimo, Сринат Перера, разъясняет, как Geronimo достигает этой цели и связывает то, что видят пользователи Geronimo с понятиями, лежащими в основе архитектуры сервера.

Дата:  09.08.2005
Уровень сложности:  простой
Активность:  892 просмотров
Комментарии:  


В августе 2003 года организация Apache Software Foundation собрала десятки разработчиков открытых проектов для создания проекта Apache J2EE Server Project, и появился на свет Apache Geronimo. Geronimo можно рассматривать как операционную систему для отдельного предприятия. Он объединяет множество открытых проектов в единую структуру, где координируется создание пакета предприятия.

Geronimo – один из наиболее сложных проектов, который взял на себя сообщество открытых проектов, сравнимый по значимости с Linux. (Некоторые обозреватели полагают, что Geronimo – проверка устойчивости практики открытых проектов и их способности обрабатывать такой уровень сложности.) Также одной из главных целей Geronimo – сертификация J2EE 1.4 – достижение, потребовавшее очень много времени. Тем не менее, Geronimo уже выпустил несколько промежуточных изданий и неуклонно движется к магическому выпуску 1.0.

Архитектура Geronimo

Как и большинство других операционных систем предприятия, Geronimo построен на ядре -- микроядро, которое лежит в основе всего, расположенного выше. Ядро Geronimo - агностик J2EE. Его единственной целью является управление строительными блоками Geronimo, называемые Geronimo Beans или GBeans для краткости.

Почти все в Geronimo – включая контейнеры, коннекторы и приложения -- GBean. Величина разбиения GBeans меняется соответственно. Например, маленький сервлет, который работает на web-контейнере - GBean, а сам web-контейнер является GBean. GBeans, особенно большие, могут составлять другие GBeans.

Структура GBeans Geronimo

Geronimo составлен из строительных блоков, называемых GBeans. Ядро Geronimo является контейнером для GBeans, который управляет их жизненными циклами. У GBeans есть устойчивые состояния, и они могут определять зависимости между ними самими. В результате, Geronimo – слабо связанная система, построенная на GBeans. Каждое действие в Geronimo – запуск, остановка, упрвление и службы размещения – могут быть выражены в единицах GBeans.

Ядро Geronimo управляет жизненными циклами GBeans и зависимостями между ними. GBeans могут удерживать состояния, определять зависимости между ними и реагировать на события жизненного цикла. Состояние GBean может стать устойчивым с помощью поддержки структуры GBean. Так как пример запуска Geronimo есть в сущности слияние запусков GBeans, эта функциональность может быть использована для хранения текущего состояния Geronimo и восстановления этого состояния позже. Эта способность уникальна, так как не требует никаких файлов конфигурации. Вместо этого, все состояния хранятся в GBeans. Более того, можно управлять GBeans через интерфейс управления, давая им возможность быть запущенными, остановленными и отредактированными на лету.

GBean могут запросить информацию о том, когда запускаются другие GBeans, с определенным именем файла. После того, как начал работать GBean, который соответствует этому имени, ссылка на запущенный GBean автоматически отправляется в GBean, который запросил информацию. Это называется вливание зависимости. Вливание зависимости делает GBeans мощным инструментом для построения слабо связанных систем.

Например, GBean, который представляет контейнер Enterprise JavaBeans (EJB) может обратиться к GBeans, которые представляют EJBs. После того, как запущен GBean, который представляет EJB, ядро уведомляет контейнер EJB об этотом. Создателям GBean не нужно соотносить их GBeans с другими GBeans; достаточно запросить информацию. После запуска GBean, все другие GBeans, которые запросили информацию о нем, становятся осведомлены об этом.


Размещение и конфигурация

Архитектура размещения Geronimo касается того, как создавать, запускать, останавливать, хранить, извлекать и удалять GBeans, которые представляют компоненты J2EE или другие компоненты (не-J2EE), размещенные в Geronimo.

Конфигурация – ключевая единица размещения. Конфигурация – это логически сгруппированное собрание одного или нескольких GBeans и загрузчика классов. Конфигурация может храниться в хранилище конфигурации, стандартном механизме хранения Geronimo. Geronimo управляет GBeans на уровне конфигурации; конфигурации запускаются сервером, а пользователь может остановить или удалить их. У каждой конфигурации есть физическое местоположение в дистрибутиве Geronimo, в папке под названием config-store. Конфигурации, поступающие с дистрибутивом, представляют службы ядра. Каждое новое размещенное приложение создает новую конфигурацию.

Добавление нового компонента к Geronimo проходит в четыре этапа, является ли это компонентом ядра или приложением:

  1. Построение GBean или GBeans, которые фиксируют информацию о компоненте и его поведении
  2. Группировка GBeans в конфигурацию загрузчиком классов, связанным с ними
  3. Хранение конфигурации в хранилище конфигурации
  4. Запуск конфигурации

После завершения этого процесса, информация о компонентах сохраняется при перезапуске сервера. Это объясняет один аспект Geronimo. У дистрибутива Geronimo нет дескрипторов размещения, так как конфигурации просто заменяют их. Вся информация о размещении переводится в GBeans, сгруппированные как конфигурации и хранящиеся в хранилище конфигураций. Рисунок 1 иллюстрирует, как GBeans создаются, запускаются и хранятся внутри Geronimo.


Рисунок 1. Архитекура конфигурации и размещения Geronimo
 Архитекура конфигурации и размещения Geronimo

Как вы можете видеть на рисунке 1, GBeans строятся одним из трех способов:

Строительные блоки Geronimo: Сравнение перспектив разработчика и пользователя.

Разработчики и пользователи Geronimo видят то же самое с разных точек зрения.

Разработчики видят слияние связанных работающих GBeans, сообщающихся друг с другом. Подлинность чего-либо еще аннулируется, как только оно оказывается в ядре Geronimo. Существуют только GBeans и конфигурации (логические собрания GBeans, которые управляются как одна единица и могут храниться и извлекаться как единица). В наиболее абстрактном смысле, Geronimo составлен только из GBeans. Даже конфигурации имеют значение только когда запущены GBeans.

Пользователи интересуются объектами, точно определенными J2EE такими, как сервлеты, EJBs, источники данных, коннекторы и следующими дескрипторами размещения, определенные контейнером:

  • модули J2EE -- размещаемые единицы программного обеспечения, определенные спецификацией J2EE
  • Планы размещения -- XML файлы, используемые для предоставления Geronimo больше информации о модуле.
Разместитель Geronimo расположен между ними и преобразовывает все, что существует в мире J2EE в мир Geronimo (см. рисунок 1).
  • Из планов - План – это сериализация XML GBean. Планы используются для конфигурации компонентов ядра Geronimo. Строители конфигурации Geronimo конструируют GBeans из планов и хранят их в хранилище конифигурации. Эти планы живут в исходном коде Geronimo, но считываются и хранятся как конфигурации, когда строится бинарное распределение. Они не включены в бинарное распределение, так как уже послужили своей цели.

  • Из модулей размещения J2EE - Для размещения чего-нибудь, не являющегося GBean в Geronimo, разместитель Geronimo создает GBean, который хранит предоставленную им информацию. Например, рассмотрим EJB, который включает в себя файл ejb-jar.xml и некоторые классы. Разместитель Geronimo создает GBean, который содержит информацию, которую представляет модуль, и хранит GBean в хранилище конфигурации.

  • Путем программирования - Если GBean не может быть создан из плана или модуля размещения, его следует создать программным путем. Это – наименее используемая опция.

Пример интеграции

Хорошим примером интеграции проекта с Geronimo служит интеграция контейнера EJB. Вы моделируете контейнер EJB как один или более GBeans, группируете их как конфигурацию и представляете конфигурацию как план. Geronimo считывает план и строит, хранит и запускает конфигурацию.

GBean контейнера EJB не знает о EJBs, которые размещены в нем. Но он обращается с помощью ядра к GBeans, которые соответствуют представлению GBean, принадлежащего EJB. Когда разработчик J2EE создает модуль EJB и размещает его, разместитель Geronimo создает GBean, который представляет модуль EJB, хранит его в хранилище конфигурации и запускает этот GBean. После запуска Gbean ядро вливает GBean в GBean контейнера EJB, потому что последний запросил информацию о GBeans, принадлежащим EJB. Это вливание уведомляет контейнер EJB о EJB и дает ему возможность обслуживать запросы, направленные к EJB.


За занавесом

В этом разделе объясняется, что происходит за сценой, когда выполняются коаманды размещения. Все показанные команды работают из инсталляционной директории Geronimo. Эта команда запускает сервер Geronimo:

$ java -jar bin/server.jar configuration1 ...

После выполнения этой команды на экран выводится информация, подобная той, которую вы видите в листинге 1:


Листинг 1. Запуск Сервера
                .......
10:56:10,580 INFO [Configuration] Started configuration org/apache/geronimo/System
10:56:10,668 INFO [RMIRegistryService] Started RMI Registry on port 1099
10:56:10,836 INFO [ReadOnlyRepository] Repository root is
   file:/home/hemapani/drafts/dev-works/geronimo-1.0-M3/repository/
10:56:10,890 INFO [ConfigurationManagerImpl] Loaded 
   Configuration geronimo.config:name="org/apache/geronimo/SystemJMS"
...

Geronimo выбирает конфигурацию из хранилища конфигураций и запускает их по очереди. Каждая конфигурация запускает GBeans, связанные с ней.

Запуск конфигурации

Команда для запуска конфигурации выглядит так:

$ java -jar bin/server.jar configuration1 ...

Это запускает конфигурацию вместе со всеми зависимостями. Вы можете найти все имеющиеся конфигурации в config-store/index.properties, но будьте осторожны: не изменяйте этот файл, так как это может разрушить вашу инсталляцию. Команда запускает все GBeans в каждой конфигурации, которая запускается.

Размещение модуля

Команда для размещения модуля выглядит так:

$ java -jar bin/deployer.jar deploy YourApplication.ear

Это создает GBeans из модуля J2EE, например, корпоративный архив (EAR). Он создает конфигурацию и хранит ее в хранилище конфигураций в новой папке, которую Geronimo создает внутри папки config-store дистрибутива Geronimo. После того как установлена новая конфигурация, она запускается.

Удаление модуля

Команда для удаления модуля выглядит так:

$ java -jar bin/deployer.jar undeploy module-id

GBeans, связанные с модулем, прекращают работу, а затем удаляются из хранилища конфигураций.

Размещение службы

Команда для размещения сервиса выглядит так:

$ java -jar bin/deployer.jar deploy YourService-plan.xml

Вы можете использовать эту команду для размещения одного или более индивидуальных GBeans. Файл XML - это XML-сериализация GBeans. У этой команды нет ничего общего с J2EE, и она может быть использована для размещения индивидуальных служб в Geronimo. Пример приложения, описанного в следующем разделе, продемонстрирует эту способность.


Пример приложения

Для демонстрации понятий, обсуждаемых до настоящего времени, эта статья предоставляет простой пример эхо сервера, написанного с исользованием архитектуры GBeans Geronimo. Для размещения сервера используется размещение командной строкой Geronimo. Приложение показывает, как заказной компонент – тот, у которого нет ничего общего J2EE – может быть размещен в Geronimo. Каждый разместитель приложения J2EE использует тот же самый механизм для преобразования компонента J2EE в GBeans, хранит их как конфигурации и запускает.

Начало работы

Проделайте следующие шаги для подготовки запуска приложения:

  1. Загрузите дистрибутив Geronimo (см. Ресурсы для ссылки на страницу загрузки web-сайта Apache) и распакуйте его в директорию по вашему выбору. С этого момента я буду ссылаться на эту директорию, как на домашнюю Geronimo или $GERONIMO_HOME.
  2. Загрузите пример кода (см. Загрузка кода примера) и распакуйте его. Будет создана папка с примерами, содержащая файл build.xml. Скопируйте папку с примерами в домашнюю директорию Geronimo.
  3. Установите Apache Ant (см. Ресурсы для ссылки на web-сайт).
  4. Постройте пример приложения, поменяв директорию на директорию с примерами и напечатав $ant. В результате произойдет компиляция и построение файла sample.jar а также копирование его в GERONIMO_HOME/repository/sample/jars.

Понимание примера

У GERONIMO_HOME/sample/src/EchoServer.java есть реализация эхо сервера GBean. Код GBean показан в листинге 2.


Листинг 2. Код GBean эхо сервера
                public class EchoServer implements GBeanLifecycle {
    private static final GBeanInfo GBEAN_INFO;
    private final String objectName;

    private int port;
    private ServerSocket serversocket;
    private boolean started = false;

    static {
        GBeanInfoBuilder infoFactory =
            new GBeanInfoBuilder(EchoServer.class.getName(), EchoServer.class);
        // атрибуты
        infoFactory.addAttribute("objectName", String.class, false);

        infoFactory.addAttribute("port", int.class, true);

        // действия
        infoFactory.setConstructor(new String[] { "objectName", "port" });
        GBEAN_INFO = infoFactory.getBeanInfo();
    }

    public EchoServer(String objectName, int port) {
        this.objectName = objectName;
        this.port = port;
    }

    public void doStart() throws WaitingException, Exception {
       //код для запуска эхо сервера 

    }
    public void doStop() throws WaitingException, Exception {
        //код для остановки эхо сервера 
    }
    .....
}

Листинг 3 показывает файл $GERONIMO_HOME/sample/echo-server.xml, который является планом для размещения эхо сервера внутри Geronimo


Листинг 3. План размещения эхо сервера
                <?xml version="1.0" encoding="UTF-8"?>

<configuration
    xmlns="http://geronimo.apache.org/xml/ns/deployment"
    configId="deployment/echoserver"
    >

    <gbean name="geronimo.test:name=echoserver" 
           class="EchoServer" >
           <attribute name="port" type="int">2345</attribute>
       </gbean>    
        <dependency>
        <uri>sample/jars/samples.jar</uri>
        </dependency>
</configuration>

Обратите особое внимание на атрибут port и зависимость, которая объясняет, где можно найти классы для эхо сервера. Путь дается относительно директории репозитория домашней директории Geronimo. ID конфигурации однозначно определяет конфигурацию.

Запуск сервера Geronimo

Перейдите в директорию $GERONIMO_HOME и запустите сервер Geronimo:

$ java -jar bin/server.jar

Размещение эхо сервера

В отдельной оболочке перейдите в директорию $GERONIMO_HOME и разместите эхо сервер:

$  java -jar bin/deployer.jar deploy samples/echo-server.xml

Размещение службы

После подсказки разместителя, введите system как имя пользователя и manager как пароль:

Username: system
Password: manager
Deployed deployment/echoserver

В окно сервера будет выведена информация, что запущен GBean. Нижняя строка – оператор System.out.println() в эхо сервере GBean. Теперь эхо сервер запущен и работает. Для того, чтобы это провоерить возпользуйтесь клиентом сетевого теледоступа или контрольным примером, предоставленным загрузочным файлом.

Другие команды

Вы также можете попробовать следующие команды: остановить, запустить и удалить эхо сервер:

 java -jar bin/deployer.jar stop deployment/echoserver
 java -jar bin/deployer.jar start deployment/echoserver
 java -jar bin/deployer.jar undeploy deployment/echoserver

В каждом случае в окне сервера будет указано, что происходит, включая то, какие конфигурации начали или прекратили работу.


Заключение

Вы узнали о модели размещения Geronimo, которая собирает множество разных открытых проектов под один "зонтик". Пользователям Geronimo не нужно знать все подробности, описанные в этой статье, но если вам любобытно взглянуть за занавес, вы приобретете более глубокое понимание понятий, лежащих в основе архитектуры Geronimo.


Ресурсы

Научиться

  • Оригинал статьи Understand Geronimo's deployment architecture.

  • Подробно изучите GBeans, прочитав статью Срината Пепера "Geronimo GBean Architecture."

  • На странице Apache Geronimo Wiki вы найдете свежую информацию по Geronimo и подробные инструкции, как скачать релиз M4.

  • Узнайте последние новости на официальном сайте Apache Geronimo.

  • Совершите экскурсию по Geronimo с автором Синг Ли: "Geronimo! Part 1: The J2EE 1.4 engine that could" (developerWorks, май 2005), "Geronimo! Part 2: Tame this J2EE 1.4 bronco" (developerWorks, май 2005).

  • На сайте проекта Apache Geronimo вы найдете материалы для разработчиков Geronimo.

  • Посетите зону открытого кода developerWorks, чтобы получить исчерпывающую информацию, советы, обновления проектов. Это поможет вам более эффективно использовать техонологию открытого кода совместно с продуктам IBM.

  • Просмотрите все статьи Apache articles и бесплатные учебные пособия Apache tutorials доступные в области открытых проектов в developerWorks.

Получить продукты и технологии

  • Скачайте информацию и документацию с сайте Apache Maven. Мавен является руководителем проекта по программному обеспечению и сопутствующих инструментов, которые автоматизируют развертывание приложений Geronimo.

  • Известный инструмент, основанный на Java, - Apache Ant вы можете скачать с сайта проекта.

  • Скачайте Gluecode Standard Edition - серверное приложение с открытым кодом, основанное на Apache Geronimo.

  • Попробуйте внедритьпробные программы от IBM в ваш следующий проект с открым кодом. Возможно скачать или приобрести на DVD.

  • Вы можете скачать дистрибутив Apache Geronimo с сайте Apache.

Обсудить

Об авторе

Srinath Perera

Сринат Пепера – разработчик Geronimo, опытный разработчик web-служб, J2EE и технологий обработки XML. Сринат принимает активное участие в проекте Apache Web Services как разработчик в проектах WS-FX, Enterprise Web Services (EWS), Axis и Axis 2. Он представляет Axis2 в Комитете Управления Проектом Apache Web Services (the Apache Web Services Project Management Committee). Вы можете написать Сринату на hemapani@gmail.com.

Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Спасибо. Эта запись была помечена для модератора.


Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Сообщение о нарушении не было отправлено. Попробуйте, пожалуйста, позже.


developerWorks: вход


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Выберите ваше отображаемое имя

При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

(Должно содержать от 3 до 31 символа.)


Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Оценить эту статью

Комментарии

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source, Технология Java
ArticleID=145793
ArticleTitle=Понимание архитектуры размещения Geronimo
publish-date=08092005
author1-email=hemapani@gmail.com
author1-email-cc=ruterbo@us.ibm.com

Теги

Help
Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Используйте ползунок, чтобы отразить больше или меньше тегов.

КнопкаПопулярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere).

Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).

Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Кнопка Популярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere). Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).