Журнал LinuxFormat - перейти на главную

LXF78:Знакомство с IBM WebSphere Community Edition

Материал из Linuxformat
Перейти к: навигация, поиск

В последние годы мы стали свидетелями того, как Open Source проникает в области, где до того правили бал коммерческие и очень дорогие решения. Александр Цымбал рассказывает об одном из героев этой революции – J2EE-сервере WebSphere Community Edition, базирующемся на Apache Geronimo.

Содержание


WebSphere Community Edition (WAS CE) – это компактный и не требующий для работы большого количества ресурсов, бесплатный J2EE-сервер с открытым кодом, разрабатываемый IBM на основе J2EE-сервера Geronimo консорциума Apache. Несмотря на свою «легкость», WAS является полноценным J2EE-сервером, сертифицированным на соответствие спецификации J2EE 1.4. Он создавался не только как прекрасная платформа на разработчиков, которые только начинают использовать J2EE и изучают ее возможности, но и как операционная среда для реальных приложений, обслуживающих малый и средний бизнес. Кроме того, WAS CE является не «изолированным» решением, а полноценным младшим членом семейства WebSphere, что подразумевает простоту перехода на более мощные реализации.

В начале этого года появилась версия 1.0, (после ряда milestone-релизов), которая доступна для скачивания по адресу http://www.ibm.com/developerworks/downloads/ws/wasce/?S_TACT=105AGX28&S_CMP=DLMAIN.

Единственной платной составляющей использования WAS CE для разработки, развертывания, распространения и выполнения приложения является техническая поддержка от IBM – в тех случаях, когда пользователь считает полезным или необходимым получить ее.

WAS CE построен по технологии, впервые использованной для разработки J2EE-сервера приложений с открытым кодом Geronimo (Apache Software Foundation). В основу проекта Geronimo была положена компонентная модель GBeans, реализующая концепцию Inversion of Control (IoC). Часто вместо IoC используется термин «dependency injection», что можно перевести как «включение зависимостей». Хотя для разработчика J2EE-приложений не имеет значения, как именно реализован используемый им J2EE-сервер, знакомство с основами этой концепции и компонентной модели Gbeans облегчает понимание смысла некоторых тегов XML-дескрипторов и структуры каталогов, создаваемых на диске в процессе инсталляции.

Модель Gbeans

Среда GBeans является универсальной средой, которая сама по себе никак не связана с J2EE. Как любая компонентная модель, она включает в себя «Контейнер», т.е. среду управления циклом жизни компонентов (она называется Geronimo Kernel), и собственно компоненты. Компоненты GBeans имеют следующие основные особенности:
• Они могут иметь состояние, которое может храниться в течение срока жизни компонента;
• Компоненты могут сами хранить связи друг с другом;
• Компоненты могут реагировать на определенные события (в этом случае выполняется соответствующая часть бизнес-логики компонента, созданная его разработчиком) .

«Поля состояния» компонента можно разделить на две группы – атрибуты и связи.

Таким образом, система строится только из GBeans-компонентов. Эти компоненты взаимодействуют друг с другом не непосредственно, а посредством ядра Geronimo. Связи между компонентами, называемые «зависимостями» (dependencies), прописываются на уровне XML-описаний компонентов, которые во многих компонентных моделях, например, EJB, обычно называются «дескрипторами развертывания» (deployment descriptors), а в модели GBeans – «планами развертывания» (deployment plans). Ядро Geronimo, анализируя планы, «узнает» о связях компонентов друг с другом и может генерировать динамические proxy-объекты, обеспечивающие связь компонентов, и автоматически добавлять ссылки на создаваемый экземпляр компонента во все компоненты, зависящие от данного.

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

В случае «чистого» компонента GBeans его план развертывания содержит всю необходимую на уровне конфигурации информацию. В проектах Geronimo и WAS CE такие компоненты используются очень широко. Например, таким Gbeans-компонентом является реализация сервера JMS или координатора объектных транзакций. Для развертывания GBeans-компонента создается план развертывания, который представляет собой XML-документ.

Если же рассматривать EJB-компоненты или Web-компоненты J2EE, то соответствующие им GBeans-компоненты генерируются на основе кода и дескрипторов, уже существующих для этих сущностей, и план развертывания для Gbeans-компонента содержит только дополнительную информацию. Таким образом, при использовании стандартных J2EE-сущностей план развертывания очень удобно трактовать как специфический для реализации J2EE-контейнера дескриптор развертывания, хорошо знакомый всем программистам, имеющим опыт работы с J2EE-серверами (необходимость такого рода дополнительных дескрипторов связана с тем, что спецификации J2EE-дескрипторов просто не оговаривают все необходимые параметры для EJB-компонентов, сервлетов или JSP-документов). Соответственно, планы развертывания будут в чем-то похожи на обычные дескрипторы развертывания для таких J2EE-сущностей, как приложений J2EE (тег <application>), клиентское приложение J2EE (тег <application-client>), web-приложение (тег <web-app>), EJB-компонент (<ejb-jar>) или ресурсный адаптер (тег <connector>). Процедура развертывания таких GBeans-компонентов похожа на процедуру развертывания соответствующих J2EE-элементов. Как правило (хотя это и не обязательно), план развертывания Geronimo включается в J2EE-модуль вместе со стандартными дескрипторами (в каталоги META-INF и WEB-INF). При таком подходе имена XML-планов развертывания должны быть фиксированными – они приведены в таблице вверху страницы.

Основные элементы WAS CE

Сервер WAS CE полностью использует преимущества компонентной структуры GBeans, и каждый сервис в его составе является отдельным компонентом. Каждый из таких компонентов создан на основе уже существующих и апробированных на практике продуктов с открытым исходным кодом, наиболее важными из которых являются следующие:
• OpenEJB – EJB-контейнер, соответствующий спецификации EJB 2.1;
• Tomcat и Jetty – альтернативные реализации Web-контейнера;
• Active MQ – реализация JMS;
• TranQL – реализация пула соединений JDBC и механизма сохранения состояния EJB entity-компонентов в режиме CMP (Container-Managed Persistence);
• MX4J – реализация JMX
• Axis – реализация Web-сервисов;
• Derby – реляционная СУБД.

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

Для запуска сервера на платформах Linux и Windows требуется минимум 120 Мб дискового пространства (не считая JDK) и не менее 128 Мб RAM (желательно 256 Мб). Поддерживаются JDK 1.4.2 от Sun и IBM.

Запуск и настройка WAS CE

WAS CE и Geronimo могут поставляться (в бинарном формате, а не в виде исходного кода) как в форме дистрибутива, так и обычного архива.

Наиболее удобен первый способ – с использованием программы установки, которая (начиная со следующей версии) позволит в интерактивном режиме сконфигурировать сервер и настроить многие параметры его функционирования. Для текущей версии программа установки просто запрашивает, согласны ли вы с лицензионным и соглашением и просит указать каталог для инсталляции. Помимо этого, программа установки проверяет наличие JDK на вашем компьютере и заносит соответствующую информацию в командные файлы для запуска сервера.

Во втором случае архив нужно просто распаковать в выбранный каталог (каталог установки). Выбор одного из двух поддерживаемых вариантов JDK – от IBM или от Sun – остается на усмотрение пользователя.

После установки в указанном каталоге создаются следующие основные подкаталоги:
• /bin, который содержит исполняемый код сервера (файл server.jar), средства для развертывания приложений (deploy.jar), утилиты для запуска клиентских приложений в формате J2EE (client.jar) и остановки сервера (shutdown.jar), а также командные файлы для запуска сервера на платформах Linux (startup.sh) и Windows (startup.bat).
• /config-store – содержит подкаталоги модулей WAS CE – модулей в смысле технологии GBeans и Geronimo, а не J2EE. Модулями в таком понимании являются приложения J2EE, коннекторы Java, отдельные объекты, например, пул соединений с БД, сервисы – например, реализация брокера сообщений JMS. Некоторые из находящихся в данном каталоге модулей необходимы для работы J2EE-сервера и ядра Geronimo и запускаются всегда (таких в этом каталоге немного), некоторые запускаются тогда, когда это необходимо пользователю. Именно в этот каталог помещаются конфигурации, соответствующие приложениям, созданным прикладным программистом. Каждый подкаталог данного каталога имеет порядковый номер, а список модулей, содержащий эти номера (и имена JMX) находится в файле index.properties в этом же каталоге. Этот список обновляется автоматически.
• /lib – содержит (в виде jar-файлов) реализацию ядра Geronimo и основных сервисов.
• /repository – этот каталог можно трактовать как набор библиотек – как системных, так и прикладных. Разработчик помещает в этот каталог (точнее, в один из ее подкаталогов) объекты и компоненты, которые должны быть доступны для различных модулей и приложений, развернутых на сервере. Например, сюда нужно помещать jar-файл, который содержит классы JDBC-драйверов для конкретных БД. Как правило, данные модули загружаются не непосредственно сервером, а косвенно, посредством загрузки других модулей, которые, в свою очередь, используют модули каталога repository.
• /schema – этот каталог содержит XML-схемы и DTD для используемых при работе сервера классов XML-документов.
• /license – содержит текст лицензии для WAS CE на различных языках. Текст лицензии на русском должен появиться в апреле 2006 г.
• /var – каталог, содержащий информацию о настройках сервера и его отдельных сервисов. Здесь находится основной файл настройки параметров сервера – /var/config/config.xml.

Поскольку сервер представляет собой, главным образом, набор сериализованных конфигураций, состоящих из GBeans-компонентов (которые имеют атрибуты), то поведение сервера можно менять при каждом запуске, изменяя набор конфигураций или задавая различные значения атрибутов компонентов. Список конфигураций и значения атрибутов их компонентов хранятся в файле <каталог_установки>/ var/config/config.xml. Пользователь может менять содержимое этого файла – либо явно, с помощью любого текстового редактора (сервер при этом не должен быть запущен), либо неявно, устанавливая те или иные компоненты с помощью утилиты deploy или работая с консолью администратора.

Изменение атрибутов компонентов в файле config.xml – самый удобный способ менять настройки сервера, например, номера портов, которые используются при работе тех или иных сервисов WAS CE.


Img 78 66 1.jpg

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

Запустить сервер в той конфигурации, в которой он был запущен прошлый раз (при первом запуске – с конфигурацией по умолчанию) можно, выполнив командный файл startup.bat (startup.sh для Linux), не указывая никаких параметров. По мере запуска в текстовое окно консоли сервера (не путать с графической консолью администратора) выводятся сообщения о запущенных конфигурациях и некоторых их параметрах – например, номерах используемых портов.

Для изменения конфигурации сервера удобнее всего использовать утилиту развертывания компонентов (она кратко описана в следующем разделе), а также консоль администратора сервера.

После запуска сервера с конфигурацией по умолчанию создается пул соединений с реляционной БД Derby (бывшая IBM Cloudscape), поэтому пользователь может сразу приступить к работе с этой БД. Консоль администратора сервера содержит страницу, на которой пользователь может задавать SQL-операторы для работы с выбранной БД и просматривать результаты выполнения этих запросов.

Остановить сервер можно различными способами – из консоли администратора, с помощью командного файла bin/shutdown.bat (shutdown.sh для Linux) или просто нажатием CTRL-C в окне консоли сервера. Перед остановкой сервера его текущая конфигурация записывается в файл <каталог_установки>/var/config/config.xml.

Утилита развертывания компонентов

Для управления конфигурациями сервера используется утилита deploy (загрузчик).

Загрузчик используется для выполнения различных действий, основными из которых являются:
• Загрузка конфигурации (команда deploy);
• Выгрузка конфигурации (undeploy);
• Остановка конфигурации (stop);
• Запуск конфигурации (start);
• Получение списка конфигураций (list-modules)

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

Список и описание команд можно получить с помощью следующей командной строки:

java –jar deployer help [команда]

или просто выполнив командный файл /bin/deploy.bat(sh) без указания параметров

Для выполнения большинства команд загрузчика необходимо указывать имя пользователя и пароль. По умолчанию используются следующие значения:

user=system
password=manager

Если эти параметры не указаны в командной строке, то они будут запрошены в интерактивном режиме. Для указания этих параметров в командной строке используйте следующие опции:

java –jar deployer –user имя_пользователя –password пароль …

Состав групп пользователей и параметры пользователей находятся в файлах groups.properties и users.properties, соответственно, которые размещены в каталоге <install_dir>/var/security.

Команды могут выполняться по-разному – в зависимости от того, запущен сервер или нет. В большинстве случаев требуется, чтобы сервер был запущен.

В общем случае требуется указать сервер, в котором развертывается модуль (или модули), модуль (по его глобальному имени) и план развертывания модуля, если он необходим.

Во многих случаях для выгрузки, запуска и установки модулей удобнее использовать консоль администратора.

Консоль WAS CE

Для управления сервером в процессе работы и управления конфигурациями используется консоль администратора. Консоль является серверным приложением, реализована с использованием портлетов, и ее визуальный интерфейс доступен с использованием стандартных web-браузеров, сервлетов и протокола http. Для начала работы с консолью нужно направить браузер по адресу:
http://<хост>:8080/console
Для доступа к функциональности консоли нужно ввести идентификатор и пароль. Сервер поставляется с готовым вариантом реализации системы безопасности, в том числе процедуры аутентификации, и с «администратором» по умолчанию, идентификатор которого – «system», а пароль – «manager».

Начальная страница консоли администратора выглядит как на рис.2:


Img 78 66 2.jpg

Создание J2EE-приложений для WAS CE

Создание J2EE-приложений требует от программиста основательных знаний технологий, входящих в состав J2EE, таких, как JNDI, JDBC, JSP, EJB, JCA, JACC, XML-технологий и других. Специфика использования WAS CE – как и любой другой реализации спецификации J2EE – связана с созданием специфических для каждой такой реализации дескрипторов развертывания, которые дополняют обязательные и стандартные дескрипторы развертывания для различных видов компонентов и приложений. В простейших случаях дополнительные дескрипторы развертывания либо вообще не содержат, либо содержат очень немного специфической для данного сервера информации. Кроме того, обычно для наиболее широко используемых инструментов разработки – таких, например, как Eclipse – созданы инструменты, которые автоматически создают (полностью или частично) как стандартные, так и дополнительные дескрипторы развертывания. В частности, WAS CE содержит расширения для Eclipse 3.1.2. Практика показывает, что обычно программисты не испытывают сколько-нибудь серьезных трудностей с указанием параметров в специфических для сервера дескрипторах развертывания.

Основными особенностями WAS CE, на которые стоит обратить внимание при создании J2EE-приложений, являются следующие:
• Для модулей J2EE создаются компоненты Gbeans и их конфигурации. Имя конфигурации является уникальным идентификатором этой конфигурации на сервере. Программист в случае необходимости может использовать JMX для поиска соответствующей конфигурации по ее имени, но обычно имена конфигурации указываются при работе с утилитой deploy – например, при выгрузке или остановке конфигурации. Имя конфигурации задается в плане развертывания (специфическом для WAS CE дескрипторе развертывания) с помощью атрибута configId.
• Конфигурации хранятся в сериализованном виде в своих подкаталогах каталога config-store.
• Как правило, для каждой конфигурации используется собственный загрузчик классов Java.
• Каждая конфигурация может явно задать зависимость от другой конфигурации – для этого используется атрибут parentId. Ядро Geronimo обеспечивает загрузкy сериализованного представления «родительской» конфигурации перед загрузкой той конфигурации, которая от нее зависит. С помощью атрибута parentId можно задать явную зависимость только от одной конфигурации. Другой способ задания явной зависимости от других конфигураций – использование в плане развертывания WAS CE тега <import>. Существуют и другие (так называемые «неявные») способы задания зависимостей конфигураций друг от друга. Если разработчик может включить все необходимые ресурсы в одно приложение, то следует поступать именно так, создавая приложения в виде EAR-архивов. В этом случае нет необходимости заботиться о явной или неявной зависимости конфигураций на уровне планов развертывания WAS CE.
• Все параметры времени развертывания приложения, которые необходимы для работы приложения, но не оговорены на уровне стандартных XML-дескрипторов развертывания (информация в JNDI, параметры JDBC-драйверов, объектов JMS, детали реализации абстрактных схем entity-компонентов в режиме CMP и др.), помещаются в планы развертывания WAS CE.
• Информация в планах развертывания WAS CE иногда может переопределять информацию (особенно это касается связей между компонентами), заданную на уровне стандартных дескрипторов.

Простейшее web-приложение

В качестве простейшего примера лучше всего использовать JSP-документ – это позволяет для демонстрации использования сервера задействовать (помимо средств, входящих в состав WAS CE) только текстовый редактор. В качестве клиента выступает стандартный браузер.

Это приложение, в соответствие со сложившейся традицией, в ответ на общение к нему будет отображать на экране броузера строку «Hello World!».

Для создания такого приложения нужно: • Создать в текстовом редакторе JSP-документ примерно такого вида:

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

и сохранить его в файле с именем index.jsp


• Создать (например, с помощью текстового редактора) стандартный xml-дескриптор для web-приложения J2EE. Этот дескриптор, в соответствие с требованиями спецификации J2EE, должен иметь имя web.xml. Этот дескриптор может выглядеть, например, так:

<!DOCTYPE web-app PUBLIC
«-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN»
«http://java.sun.com/dtd/web-app_2_3.dtd» >
<web-app>
<display-name>Archetype Created Web Application</
display-name>
</web-app>

В нем нет ничего, кроме стандартного заголовка.

Как и всякий J2EE-сервер, в общем случае, для установки компонента WAS CE требует наличия дополнительного, специфического для этого сервера дескриптора. В данном простейшем случае никакой необходимости в этом нет.

• Необходимо создать архив с расширением WAR, в котором будут находиться:
– JSP-документ – в «корневом каталоге»
– Дескриптор web.xml – в подкаталоге с именем WEB-INF

Для создания такого архива удобно использовать стандартную утилиту jar. Пусть файл архива будет называться my_first_webapp.war.

Приложение готово. Осталось запустить сервер и выполнить команду установки WAR-архива – т.е. web-приложения – на этот сервер. Команда может выглядит следующим образом (в одну строку):

java -jar D:\AppServerCommunityEdition\bin\deployer.jar --user system --password manager deploy my_first_webapp.war

Теперь можно обратиться к нашему web-приложению, задав в браузере следующий URL:
http://localhost:8080/my_first_webapp

В данном случае созданное web-приложение получило имя по имени архива. URL не содержит имени самого JSP-документа, так как его имя – index.jsp –используется по умолчанию.

Заключение

WAS CE является простой в использовании, хотя достаточно мощной и полностью соответствующей спецификации средой развертывания и выполнения J2EE-приложений, которая прекрасно подходит как для изучения комплекса технологий J2EE, так и создания реальных информационных систем в интересах малого и среднего бизнеса.



Модуль J2EE Стандартный дескриптор План развертывания Geronimo
EJB JAR META-INF/ejb-jar.xml META-INF/openejb-jar.xml
Web-приложение WEB-INF/web.xml WEB-INF/geronimo-web.xml
Коннектор J2EE META-INF/ra.xml META-INF/geronimo-ra.xml
EAR-приложение META-INF/application.xml META-INF/geronimo-application.xml
Клиентское приложениe J2EE META-INF/application-client.xml META-INF/geronimo-application-client.xml
Персональные инструменты
купить
подписаться
Яндекс.Метрика