Полноценная работа с Litte-G и Geronimo невозможна без знания их архитектуры. В основе платформы Geronimo лежит модульная архитектура. Ядром платформы является среда исполнения (runtime container) для специальных компонентов, называемых GBeans. Родственные GBean компоненты сгруппированы в установочные модули, называемые конфигурациями (configurations). В случае Little-G на основе модульной архитектуры платформы Geronimo создается облегченная версия сервера. Архитектура Little-G показана на рисунке 1.
Рисунок 1. Архитектура Little-G на базе платформы Geronimo
Добавление новых сервисов и функциональности производится путем установки конфигураций на платформе Geronimo. Базовые конфигурации Geronimo kernel (ядро Geronimo) и Geronimo system (система Geronimo) формируют ядро платформы для всех серверов на базе Geronimo. В Little-G к этому ядру добавлена конфигурация с поддержкой службы имен и вызова удаленных методов (Remote Method Invocation - RMI), которая привносит возможность поиска удаленных объектов. Кроме того, эта конфигурация добавляет поддержку многопоточности и модуль установки плагинов. Конфигурации Java EE сервера (Java EE server) и безопасности Java EE приложений (Java EE security) располагаются поверх конфигурации RMI. Конфигурация Java EE сервера обеспечивает поддержку базовых объектов Java EE, таких как сервер и объект, находящийся под управлением сервера. Конфигурация безопасности Java EE приложений поддерживает реализацию модели безопасности на основе JAAS (Java Authentication and Authorization Service - служба аутентификации и авторизации Java) и login-модуль на базе JAAS, а также предоставляет зону безопасности на базе файла свойств, доступную изнутри приложений. Поверх сервера Java EE располагается конфигурация, обеспечивающая поддержку транзакций. В заключение конфигурация Apache Tomcat встраивает в Geronimo Web-контейнер Tomcat.
В дополнение к конфигурациям, показанным на рисунке 1, Little-G включает в себя следующие модули-установщики (deployers):
- конфигурация geronimo/geronimo-gbean-deployer/1.1.1/car выполняет установку Litte-G модулей,
- конфигурация geronimo/j2ee-deployer/1.1.1/car выполняет установку Web-приложений Java EE,
- конфигурация geronimo/tomcat-deployer/1.1.1/car осуществляет установку Web-приложений в Web-контейнер Tomcat.
- Также присутствуют три вспомогательные конфигурации:
- geronimo/unavailable-ejb-deployer/1.1.1/car - обрабатывает ситуацию, когда отсутствует поддержка EJB,
- geronimo/unavailable-webservices-deployer/1.1.1/car - обрабатывает ситуацию, когда отсутствует поддержка Web-сервисов,
- geronimo/unavailable-client-deployer/1.1.1/car - обрабатывает ситуацию, когда отсутствует модуль для установки клиентов.
Little-G поставляется со следующими сервисами и функциональными возможностями:
- Web-контейнер, работающий на базе Tomcat или Jetty,
- Простейший сервер Java EE,
- Реализация безопасности приложений на основе JAAS,
- Служба имен на базе RMI,
- Модуль-установщик для конфигураций GBean,
- Модуль-установщик для Web-приложений,
- Работа с JDBC при помощи TranQL, проекта с открытым кодом для создания собственных решений по сохранению данных в базу (persistence engine),
- Функциональность для создания и установки плагинов для Geronimo.
Примечание. Плагины для Geronimo сходны с плагинами для Eclipse, которые содержат упакованные приложения или дополнительную функциональность. Плагины для Geronimo содержат всю информацию, необходимую для установки, так что их можно легко установить, не беспокоясь об особенностях настройки среды.
Little-G можно установить двумя способами:
- Cкачать архив с сервером и установить его,
- Построить сервер из исходного кода.
Если вы решите собрать сервер из исходного кода, то необходимо скачать исходный код и запустить соответствующие задачи Maven, чтобы откомпилировать и скомпоновать сервер. Но в данной статье сервер будет установлен из архива, поэтому вам потребуется Subversion, чтобы скачать Geronimo.
Скачивание и установка Little-G
Для начала нужно скачать Geronimo. По представленной ссылке находятся версии Geronimo и Little-G для Unix® и Microsoft® Windows®. Скачайте архив с Little-G Apache Tomcat и разархивируйте его в папку GERONIMO_HOME, как показано на рисунке 2.
Рисунок 2. Структура каталога Little-G
Как можно заметить после установки, структура каталогов Little-G похожа на структуру каталогов Geronimo. Что не удивительно, так как Little-G построен на базе Geronimo.
В состав Little-G не входит консольное приложение, поэтому вы не можете проверить успешность установки, введя в Web-браузере URL консоли (http://localhost:8080/console). Для взаимодействия с сервером Little-G необходимо использовать командную строку (Command Line Interface - CLI). Запустите сервер, введя любую из предлагаемых команд в каталоге GERONIMO_HOME/bin:
GERONIMO_HOME\bin> java –jar server.jar
или
GERONIMO_HOME\bin> startup
Сервер запустится и выведет информацию о ходе инициализации в окне консоли, как на рисунке 3.
Рисунок 3. Сообщения, выводимые при запуске Little-G
Если вы увидели эти сообщения, значит, установленный сервер Little-G работает.
Little-G запускает несколько служб (listeners):
- Служба имен на порту 1099;
- Служба удаленного доступа на порту 4242;
- Адаптер Tomcat Accelerated Graphics Port (AGP) для интеграции с Web-сервером Apache;
- Обработчики протоколов HTTP и HTTP over Secure Socket Layer (HTTPS) на портах 8080 и 8443 соответственно;
- Адаптер Java Management Extension (JMX), который устанавливает службу, используемую для развертывания приложений.
Теперь вы знаете, как запустить сервер. Для того чтобы аккуратно выключить его, введите следующую инструкцию в командной строке:
GERONIMO_HOME/bin> shutdown –user system –password manager
Большинство системных настроек Little-G, таких как уровень журналирования и порты, на которых находятся http- и HTTPS-обработчики, можно легко изменить. Информация о конфигурации сервера содержится в файле GERONIMO_HOME/var/config/config.xml. Например, если требуется изменить порт, на котором работает обработчик протокола Tomcat HTTP, нужно изменить значение атрибута port в элементе TomcatWebConnector GBean, как показано в примере 1.
Пример 1. Файл сonfig.xml
<module name="geronimo/tomcat/1.1.1/car">
<gbean name="TomcatResources"/>
<gbean name="TomcatWebConnector">
<attribute name="host">0.0.0.0</attribute>
<attribute name="port">8080</attribute>
<attribute name="redirectPort">8443</attribute>
</gbean>
<gbean name="TomcatAJPConnector">
<attribute name="host">0.0.0.0</attribute>
<attribute name="port">8009</attribute>
<attribute name="redirectPort">8443</attribute>
</gbean>
<gbean name="TomcatWebSSLConnector">
<attribute name="host">0.0.0.0</attribute>
<attribute name="port">8443</attribute>
</gbean>
<gbean name="geronimo/tomcat/1.1.1/car?ServiceModule=geronimo/tomcat/1.1.1/car,
j2eeType=GBean,name=TomcatWebContainer">
<attribute name="catalinaHome">var/catalina</attribute>
</gbean>
</module>
|
Также можно изменить порт обработчика HTTPS, изменив значение атрибута port в элементе TomcatWebSSLConnector GBean. Файл config.xml считывается каждый раз при запуске сервера, и значения атрибутов применяются к соответствующим GBeans. Сервер также сам изменяет это файл в случае развертывания новых приложений или удаления существующих. В общем случае вы можете изменять существующие или добавлять новые значения для любого GBean в модуле через соответствующие элементы в данном файле. Однако если необходимо изменить настройки журналирования, то это делается другим способом. Для этого следует внести изменение в файл GERONIMO_HOME/var/log/server-log4j.properties.
Скачивание, развертывание и запуск примеров приложений.
Так как в состав Little-G не входят примеры приложений, необходимо скачать и установить их отдельно. При этом вы сможете научиться устанавливать и запускать приложения в Little-G.
Ссылка sample applications (примеры приложений) на странице с документацией Geronimo приведет вас к списку примеров приложений. Скачайте приложение web application security sample (пример обеспечения безопасности Web-приложения). Также можно скачать пример приложения timereport.zip из раздела материалы для скачивания. В этом примере работники могут вводить данные о затратах рабочего времени, а менеджеры - вводить данные о затратах рабочего времени и добавлять новых работников. В этом приложении в качестве хранилища информации для обеспечения безопасности Web-приложения используется база данных.
Примечание. Для статьи была использована база данных postgreSQL v8.0 (см. дополнительные материалы). Вы можете использовать любую другую базу данных, однако примеры кода в данной статье настроены именно на postgreSQL.
После установки и запуска базы данных необходимо запустить SQL сценарий config/TimeReportDB.sql, который имеется в архиве timereport.zip в разделе материалы для скачивания. Этот сценарий создаст пользователя и группу таблиц, которые будут использоваться для настройки параметров безопасности.
Установка драйвера для базы данных в репозитарий Little-G
Вы уже видели структуру каталогов Little-G: в каталоге GERONIMO_HOME/repository содержатся все сторонние библиотеки. Установите .jar файл с драйвером для базы данных в этот каталог. Каталог repository содержит сторонние библиотеки в подкаталогах в соответствии с правилами наименования, принятыми в Maven, как показано на рисунке 4.
Рисунок 4. Репозитарий Little-G
Как можно видеть, файл commons-digester-1.6.jar находится в каталоге commons-digester/commons-digester/1.6. Это означает, что если библиотека поставляется в .jar файле, имеет groupID cglib и artifactID cglib-nodep и версию 2.1_3, то Little-G ожидает увидеть файл cglib-nodep-2.1_3.jar в каталоге GERONIMO_HOME/repository/cglib/cglin-nodep/2.1_3. Поэтому, чтобы установить файл postgresql-8.0.jar, поместите его в подкаталог postgresql/postgresql/8.0 в каталоге repository.
В нашем приложении для хранения информации о настройках безопасности используется база данных, и поддержку данного способа обеспечения безопасности (database-based security realm) необходимо добавить до установки Web-приложения. Для этого отредактируйте конфигурацию модуля безопасности (security realm) в файле config/TimeReportRealm.xml, указав в настройках модуля входа в систему (login module) его зависимость от postgreSQL и параметры подключения к нашей базе данных - класс JDBC драйвера и URL для подключения к базе, как это сделано в примере 2.
Пример 2. Конфигурация модуля безопасности
<module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1">
<environment>
<moduleId>
<groupId>console</groupId>
<artifactId>TimeReportRealm</artifactId>
<version>1.0</version>
<type>car</type>
</moduleId>
<dependencies>
<dependency>
<groupId>geronimo</groupId>
<artifactId>j2ee-security</artifactId>
<type>car</type>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.0</version>
<type>jar</type>
</dependency>
</dependencies>
</environment>
<gbean name="TimeReportRealm"
class="org.apache.geronimo.security.realm.GenericSecurityRealm">
<attribute name="realmName">TimeReportRealm</attribute>
<reference name="ServerInfo">
<name>ServerInfo</name>
</reference>
<reference name="LoginService">
<name>JaasLoginService</name>
</reference>
<xml-reference name="LoginModuleConfiguration">
<log:login-config
xmlns:log="http://geronimo.apache.org/xml/ns/loginconfig-1.1">
<log:login-module control-flag="REQUIRED"
server-side="true" wrap-principals="false">
<log:login-domain-name>TimeReportRealm</log:login-domain-name>
<log:login-module-class>
org.apache.geronimo.security.realm.providers.SQLLoginModule<
/log:login-module-class>
<log:option name="jdbcDriver">org.postgresql.Driver</log:option>
<log:option name="jdbcUser">postgres</log:option>
<log:option name="userSelect">
select userid, password from users where userid=?
</log:option>
<log:option name="groupSelect">
select userid, groupname from usergroups where userid=?
</log:option>
<log:option name="jdbcURL">
jdbc:postgresql://localhost:5432/TimeReportDB
</log:option>
</log:login-module>
</log:login-config>
</xml-reference>
</gbean>
</module>
|
Элемент moduleId задает название в стиле Maven для данного устанавливаемого модуля (иногда вместо модуль употребляют термин конфигурация). Это означает, что в дальнейшем можно ссылаться на этот модуль из других конфигураций, используя его имя в формате URI (Uniform Resource Identifier - универсальный идентификатор ресурса) - common/TimeReportRealm/1.0/car. Также заметьте, что я добавил элемент dependency (зависимость) для файла postgreSQL.jar, хранящегося в репозитарии, и указав параметры этого элемента в стиле Maven. Я предоставил параметры для подключения к базе данных: класс JDBC драйвера, URL и имя пользователя для подключения к базе, в которой уже созданы таблицы users и usergroup.
Внеся в конфигурацию модуля безопасности необходимые изменения, его можно развернуть на сервере, используя следующую команду:
deploy –user system –password manager deploy TimeReportRealm.xml
Эта команда добавляет на сервер модуль безопасности в виде конфигурации с именем console/TimeReportRealm/1.0/car. Если вы решите удалить этот модуль с сервера, используйте другую команду:
deploy –user system –password manager undeploy console/TimeReportRealm/1.0/car
.war файл с Web-приложением имеется в каталоге release или в разделе материалы для скачивания этой статьи. Чтобы установить .war файл, выполните следующую команду:
deploy –user system –password manager deploy TimeReport.war
Эта команда выполняет развертывание Web-приложения; его можно открыть, введя URL http://localhost:8080/timereport в браузере. Вы можете войти в приложение как работник, введя emp1 как имя пользователя и pass1 как пароль. Чтобы войти как менеджер, используйте сочетание mgm1 / mgm1. Вы также можете открыть файлы конфигурации web.xml и geronimo-web.xml, чтобы узнать подробнее о том, как настраивается аутентификация и как она привязана к модулю безопасности, в котором хранится информация о безопасности (имена пользователей, пароли и т.д.).
Когда можно использовать Little-G?
Вы можете использовать Little-G всегда, когда требуется поддерживать простое Web-приложение, которому достаточно поддержки транзакций и подключения к базе данных. Для подобной задачи Little-G предлагает полноценный Web-контейнер со всей необходимой Java EE-функциональностью. Вы уже познакомились с простым примером, который использует встроенную функциональность Little-G по обеспечению безопасности Web-приложения. Использование Little-G вполне оправданно для простых и/или небольших приложений.
Эта статья знакомит с сервером приложений Little-G и функциональностью, который он предлагает Java EE приложениям. В ней показано, как модульная архитектура платформы Apache Geronimo позволила создать упрощенную и облегченную версию Geronimo. Также было продемонстрировано, как настроить, установить и запустить Web-приложение для Little-G. Little-G представляет собой полностью настраиваемую версию Geronimo, и вы легко можете использовать модульную архитектуру Geronimo для создания собственных версий Little-G.
Задание для самостоятельного изучения: попробуйте добавить новые конфигурации, чтобы обеспечить поддержку необходимых вам служб. Именно в этом состоит основное преимущество Geronimo.
| Описание | Имя | Размер | Метод загрузки |
|---|---|---|---|
| Приложение учета рабочего времени | timereport.zip | 95KB | HTTP |
Научиться
-
Оригинал данной статьи (EN).
-
Посетите домашнюю страницу Geronimo на apache.org.(EN)
-
Посетите сайт Little-G wiki, чтобы больше узнать об этом сервере. Здесь же приведены ссылки на примеры приложений для Geronimo и пример обеспечения безопасности Web-приложения(EN).
-
Посетите домашнюю страницу Codehaus, чтобы подробнее узнать о TranQL, проекте с открытым исходным кодом для создания собственных решений по сохранению данных в базу (persistence framework).(EN)
- Ознакомьтесь со статьями, обучающими материалами и другими ресурсами, чтобы сегодня же начать использовать Geronimo для разработки, в разделе Apache Geronimo на developerWorks.
- Полезные ресурсы для начинающих и продвинутых пользователей в разделе developerWorks - Get started now with Apache Geronimo (EN) .
- Ознакомьтесь с предложением от IBM IBM® Support for Apache Geronimo, позволяющим обеспечить разрабатываемые для Geronimo приложения поддержкой от IBM.(EN)
-
Раздел Open source на developerWorks содержит подробные инструкции, инструменты и новости проектов, помогающие упростить разработку с использованием технологий Open Source и их совместное применение с продуктами IBM.
-
Следите за техническими мероприятиями и Web-трансляциями на developerWorks.(EN)
- Ознакомьтесь со всеми статьями по технологиям Apache и бесплатными учебными материалами по технологиям Apache, доступными в разделе developerWorks Open source.(EN)
Получить продукты и технологии
-
Скачайте Apache Maven.(EN)
-
Скачайте Subversion.(EN)
-
В этой статье использовалась СУБД postgreSQL.(EN)
-
На сайте Geronimo на странице для скачивания материалов есть ссылки на технологии и примеры, обсуждавшиеся в этой статье.(EN)
- Скачайте последнюю версию Apache Geronimo.(EN)
- Скачайте бесплатную копию IBM WebSphere® Application Server Community Edition - упрощенного J2EE сервера приложений, построенного на основе open source технологии Apache Geronimo и предназначенного для ускорения разработки и развертывания приложений.(EN)
- Создайте свой следующий Open Source-проект с помощью программного обеспечения IBM, которое можно загрузить прямо со страницы ознакомительного ПО IBM сайта developerWorks или заказать на DVD.(EN)
Обсудить
- Примите участие в обсуждении материала на форуме.
- Оставайтесь в курсе разработки Geronimo, читая блог Apache Geronimo.(EN)
- Участвуйте в блогах developerWorks и вступайте в сообщество developerWorks.(EN)
Кумар Кишор (Kumar Kishore) работает директором Java Center of Excellence в компании US Technology и является активным сторонником движения Open Source, любителем крикета и классической музыки. Он работал в качестве разработчика и архитектора J2EE и написал множество книг и статей, включая книгу Pro Apache Geronimo.