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

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

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

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

  • Закрыть [x]

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

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

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

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

  • Закрыть [x]

Little-G: сервер приложений становится меньше

Облегченный вариант сервера приложений для простых Web-приложений

Кумар Кишор, директор Java Center of Excellence, US Technology
Кумар Кишор (Kumar Kishore) работает директором Java Center of Excellence в компании US Technology и является активным сторонником движения Open Source, любителем крикета и классической музыки. Он работал в качестве разработчика и архитектора J2EE и написал множество книг и статей, включая книгу Pro Apache Geronimo.

Описание:  Сколько раз вам приходилось писать простые Web-приложения и использовать для их развертывания высокофункциональные серверы приложений? Знаете ли вы, сколько процентов от полной функциональности платформы Java™ Enterprise Edition вы обычно используете? Рискну предположить, что около 10%. Пример: Apache Geronimo - надежный, открытый, сертифицированный на совместимость с Java 2 Enterprise Edition 1.4 сервер приложений - но при этом он громоздок, обладает огромным набором функций и потребляет много ресурсов. Чтобы создать простой, легкий, но функциональный контейнер Web-приложений, сообщество Apache разработало Apache Geronimo Little-G - урезанную версию оригинального сервера Geronimo. Хотя Little-G не является сертифицированным J2EE-сервером приложений, в нем присутствуют вся наиболее часто используемая функциональность J2EE, включая Web-контейнер, поддержку транзакций и подключение к базам данных. В этой статье вы познакомитесь с возможностями Little-G и узнаете, как устанавливать и запускать на нем Web-приложения.

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


Платформа Geronimo

Полноценная работа с Litte-G и Geronimo невозможна без знания их архитектуры. В основе платформы Geronimo лежит модульная архитектура. Ядром платформы является среда исполнения (runtime container) для специальных компонентов, называемых GBeans. Родственные GBean компоненты сгруппированы в установочные модули, называемые конфигурациями (configurations). В случае Little-G на основе модульной архитектуры платформы Geronimo создается облегченная версия сервера. Архитектура Little-G показана на рисунке 1.


Рисунок 1. Архитектура Little-G на базе платформы Geronimo
Архитектура 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

Little-G поставляется со следующими сервисами и функциональными возможностями:

  • Web-контейнер, работающий на базе Tomcat или Jetty,
  • Простейший сервер Java EE,
  • Реализация безопасности приложений на основе JAAS,
  • Служба имен на базе RMI,
  • Модуль-установщик для конфигураций GBean,
  • Модуль-установщик для Web-приложений,
  • Работа с JDBC при помощи TranQL, проекта с открытым кодом для создания собственных решений по сохранению данных в базу (persistence engine),
  • Функциональность для создания и установки плагинов для Geronimo.

    Примечание. Плагины для Geronimo сходны с плагинами для Eclipse, которые содержат упакованные приложения или дополнительную функциональность. Плагины для Geronimo содержат всю информацию, необходимую для установки, так что их можно легко установить, не беспокоясь об особенностях настройки среды.


Начало работы с Little-G

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

Как можно заметить после установки, структура каталогов Little-G похожа на структуру каталогов Geronimo. Что не удивительно, так как Little-G построен на базе Geronimo.

Проверка установки Little-G

В состав 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 работает.

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

Большинство системных настроек 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
репозитарий 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.zip95KBHTTP

Информация о методах загрузки


Ресурсы

Научиться

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

  • Скачайте 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)

Обсудить

Об авторе

Кумар Кишор (Kumar Kishore) работает директором Java Center of Excellence в компании US Technology и является активным сторонником движения Open Source, любителем крикета и классической музыки. Он работал в качестве разработчика и архитектора J2EE и написал множество книг и статей, включая книгу Pro Apache Geronimo.

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

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

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


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

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

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


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, WebSphere
ArticleID=272554
ArticleTitle=Little-G: сервер приложений становится меньше
publish-date=12032007
author1-email=kishore.kumar@ustri.com
author1-email-cc=

Теги

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

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

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

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