IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  Open source | Технология Java | WebSphere  >

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

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

developerWorks
Опции документа

Опции документа, требующие включения JavaScript, не отображаются

Обсудить

Исходные тексты примера


Выскажите мнение об этой странице

Помогите нам улучшить содержание


Уровень сложности: средний

Кумар Кишор, директор Java Center of Excellence, US Technology

03.12.2007

Сколько раз вам приходилось писать простые 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-приложения.

Платформа 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 вполне оправданно для простых и/или небольших приложений.



В начало


Заключение

Share this...

digg Digg this story
del.icio.us Post to del.icio.us
Slashdot Slashdot it!

Эта статья знакомит с сервером приложений 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 .




Выскажите мнение об этой странице


Пожалуйста, найдите минутку и заполните форму, чтобы повысить уровень сервиса.



ДаНетНе знаю
 


 


12345
 


В начало


IBM, логотип IBM, и WebSphere зарегистрированные торговые марки International Business Machines Corporation в Соединенных Штатах Америки и других странах. Java и все связанные с Java торговые марки принадлежат Sun Microsystems, Inc. в Соединенных Штатах Америки и других странах. Microsoft, Windows, Windows NT, и логотип Windows являются собственностью Microsoft Corporation в Соединенных Штатах Америки и других странах. UNIX зарегистрированная торговая марка The Open Group в Соединенных Штатах Америки и других странах. Другая компания, продукт или название услуги могут быть торговыми марками или знаками обслуживания, принадлежащими иным физическим или юридическим лицам.

IBM обладает всеми авторскими правами касательно информации, расположенной на developerWorks. Использование информации приведенной на этом ресурсе без явного письменного разрешения от IBM или первоначального автора запрещены. Если Вы желаете использовать информацию с developerWorks, пожалуйста воспользуйтесь регистрационной формой для того, чтобы связаться с нами запрос на использование материалов developerWorks Россия.

    IBM в России Конфиденциальность Контакты