IBM объявила о выходе нового выпуска WebSphere Application Server Community Edition (далее Community Edition), в котором особое внимание уделяется улучшению удобства и простоты его использования. Community Edition V2.1 включает в себя огромный набор функциональных возможностей, позиционирующих его как один из самых мощных серверов приложений с поддержкой Java™ EE5. Давайте рассмотрим возможности последней версии Community Edition.
Community Edition представляет собой сервер приложений на базе Apache Geronimo V2.1.1 с полной поддержкой Java Platform Enterprise Edition 5 (Java EE5). В данной статье рассматривается полный набор новых функциональных возможностей, включая пользовательские сборки серверов, мастер создания плана развертывания, GShell, усовершенствованную административную консоль, поддержку Global JNDI (Java Naming and Directory Interface - API языка Java для доступа к сервисам имен и каталогов) и многие другие. В данном выпуске содержится также руководство по разработке и использованию продукта, который существенно упрощает разработку, развертывание и запуск приложений .
Community Edition V2.1 включает в себя следующие новые функции:
- Пользовательские сборки серверов: Можно создавать группы серверов, содержащие только те функциональные компоненты, которые необходимы вашему приложению.
- Мастер Deployment Plan Creator (Компоновщик Плана Развёртывания): Пункт меню административной консоли, позволяющий генерировать подходящий план развертывания Web-приложений.
- GShell: Среда для выполнения команд Geronimo в режиме командной строки. GShell является расширяемой средой и включает в себя поддержку редактирования, протоколирование команд и возможность выполнения команд в разных вкладках.
- Режим "Эксперт": Предоставляет опытным пользователям полный контроль над процессами, запущенными на сервере Community Edition. По умолчанию изменять состояние критических процессов невозможно, но новый режим позволяет обойти данную настройку.
- Дополнительный модуль консоли Monitoring (мониторинга): Предоставляет поддержку мониторинга в административной консоли Geronimo. Консоль мониторинга может собирать данные статистики и производительности системы с различных серверов Geronimo и отображать их для пользователей в графическом виде.
- WADI-кластеризация: Теперь можно использовать Web Application Distribution Infrastructure (WADI) для поддержки кластеризации Web-приложений в конфигурациях Geronimo, на базе Web-контейнеров Tomcat (поддержка WADI для Jetty была введена в предыдущих версиях). Также теперь возможно развёртывать приложения для определенных администратором групп серверов Geronimo.
- Плагин Community Edition Eclipse: Модуль Eclipse теперь использует Java Architecture on XML Binding (JAXB) вместо Eclipse Modelling Framework (EMF).
- • Другие усовершенствования: Community Edition представляет обновленный интерфейс, иные усовершенствования удобства использования, компонентно-ориентированную административную консоль и поддержку дополнительных баз данных и операционных систем. Все эти дополнительные функции будут рассмотрены в конце статьи.
Community Edition V2.1 содержит несколько новых компонентов и модулей, перечисленных в Таблице 1. Новые модули выделены жирным шрифтом.
| Таблица 1. Сравнение модулей, имеющихся в версиях V2.0 и V2.1 Community Edition. | ||
| Компоненты | V2.0 | V2.1 |
|---|---|---|
| activeio-core | 3.0.0-incubator | 3.0.1 |
| activemq-core | 4.1.1 | 4.1.2 |
| activemq-ra | 4.1.1 | 4.1.2 |
| annogen | 0.1.0 | 0.1.0 |
| ant | NA | 1.7.0 |
| ant-launcher | NA | 1.7.0 |
| asm | 2.2.3 | 2.2.3 |
| asm-commons | 2.2.3 | 2.2.3 |
| aspectjrt | NA | 1.5.3 |
| axiom | 1.2.5 | 1.2.5 |
| axiom-api | 1.2.5 | 1.2.5 |
| axiom-dom | 1.2.5 | 1.2.5 |
| axiom-impl | 1.2.5 | 1.2.5 |
| axis | 1.4 | 1.4 |
| axis2 | 1.3 | 1.3 |
| axis2-adb | 1.3 | 1.3 |
| axis2-java2wsdl | 1.3 | 1.3 |
| axis2-jaxws | 1.3 | 1.3 |
| axis2-jaxws-api | 1.3 | 1.3 |
| axis2-kernel | 1.3 | 1.3 |
| axis2-metadata | 1.3 | 1.3 |
| axis2-saaj | 1.3 | 1.3 |
| backport-util-concurrent | 2.2 | 2.2 |
| bcel | 5.2 | 5.2 |
| castor | 1.0.5 | 1.0.5 |
| catalina | 6.0.13 | 6.0.16 |
| catalina-ha | 6.0.13 | 6.0.16 |
| cglib- nodep | 2.1_3 | 2.1_3 |
| Commons- beanutils | 1.7.0 | 1.7.0 |
| Commons- cli | 1.0 | 1.0 |
| Commons- codec | 1.3 | 1.3 |
| Commons- collections | 3.2 | 3.2 |
| Commons- digester | 1.8 | 1.8 |
| Commons- discovery | 0.4 | 0.4 |
| Commons- el | 1.0 | 1.0 |
| Commons- fileupload | 1.1.1 | 1.1.1 |
| Commons- httpclient | 3.0.1 | 3.0.1 |
| Commons- io | 1.2 | 1.2 |
| Commons- jexl | 1.1 | 1.1 |
| Commons- lang | 2.3 | 2.3 |
| Commons- logging | 1.0.4 | 1.0.4 |
| Commons- logging- api | NA | 1.0.4 |
| coyote | 6.0.13 | 6.0.16 |
| derby | 10.2.2.0 | 10.2.2.0 |
| derbyclient | 10.2.2.0 | 10.2.2.0 |
| derbynet | 10.2.2.0 | 10.2.2.0 |
| derbytools | 10.2.2.0 | 10.2.2.0 |
| dwr | 1.1.4 | 2.0.3 |
| geronimo-activation_1.1_spec | 1.0 | 1.0.2 |
| geronimo-annotation_1.0_spec | 1.1 | 1.1.1 |
| geronimo-connector | 2.0.1 | 2.1.1 |
| geronimo-ejb_3.0_spec | 1.0 | 1.0.1 |
| geronimo-el_1.0_spec | 1.0 | 1.0.1 |
| geronimo-j2ee-connector_1.5_spec | 1.1.1 | 2.0.0 |
| geronimo-j2ee-management_1.1_spec | 1.0 | 1.0.1 |
| geronimo-jacc_1.1_spec | 1.0 | 1.0.1 |
| geronimo-javaee-deployment_1.1MR3_spec | 1.0 | 1.0 |
| geronimo-javamail_1.4_mail | 1.2 | 1.4 |
| geronimo-jaxr_1.0_spec | 1.1 | 2.0.0 |
| geronimo-jaxrpc_1.1_spec | 1.1 | 2.0.0 |
| geronimo-jms_1.1_spec | 1.1 | 1.1.1 |
| geronimo-jpa_3.0_spec | 1.1 | 1.1.1 |
| geronimo-jsp_2.1_spec | 1.0 | 1.0.1 |
| geronimo-jta_1.1_spec | 1.1 | 1.1.1 |
| geronimo-saaj_1.3_spec | NA | 1.0.0 |
| geronimo-schema-j2ee_1.4 | 1.2 | 1.2 |
| geronimo-schema-jee_5 | 1.1 | 1.1 |
| geronimo-servlet_2.5_spec | 1.1 | 1.2 |
| geronimo-stax-api_1.0_spec | 1.0 | 1.0.1 |
| geronimo-transaction | 2.0.1 | 2.1.1 |
| geronimo-ws-metadata_2.0_spec | 1.1.1 | 1.1.2 |
| groovy-all-minimal | NA | 1.5.6 |
| gshell-bootstrap | NA | 1.0-alpha-1 |
| gshell-builtins | NA | 1.0-alpha-1 |
| gshell-cli | NA | 1.0-alpha-1 |
| gshell-command-api | NA | 1.0-alpha-1 |
| gshell-core | NA | 1.0-alpha-1 |
| gshell-embeddable | NA | 1.0-alpha-1 |
| gshell-maven-plugin | NA | 1.0-alpha-1 |
| gshell-remote-client | NA | 1.0-alpha-1 |
| gshell-remote-common | NA | 1.0-alpha-1 |
| gshell-remote-server | NA | 1.0-alpha-1 |
| gshell-whisper | NA | 1.0-alpha-1 |
| gshell-bootstrap | NA | 1.0-alpha-1 |
| gshell-builtins | NA | 1.0-alpha-1 |
| gshell-cli | NA | 1.0-alpha-1 |
| gshell-command-api | NA | 1.0-alpha-1 |
| gshell-core | NA | 1.0-alpha-1 |
| gshell-embeddable | NA | 1.0-alpha-1 |
| gshell-maven-plugin | NA | 1.0-alpha-1 |
| howl | 1.0.1-1 | 1.0.1-1 |
| httpcore | 4.0-alpha5 | 4.0-alpha5 |
| geroimo-interceptor_3.0_spec | 1.0 | 1.0.1 |
| jasper | 6.0.13 | 6.0.16 |
| jasper-el | 6.0.13 | 6.0.16 |
| jasper-jdt | 6.0.13 | 6.0.16 |
| jaxb-api | 2.0 | 2.0 |
| jaxb-impl | 2.0.5 | 2.0.5 |
| jaxb-xjc | 2.0.5 | 2.0.5 |
| jaxen | 1.1-beta-10 | 1.1-beta-11 |
| jaxws-rt | 2.0 | 2.0 |
| jaxws-tools | 2.0 | 2.0 |
| jcl104-over-slf4j | NA | 1.4.3 |
| jline | NA | 0.9.94 |
| jstl | 1.2 | 1.2 |
| juddi | 0.9rc4 | 0.9rc4 |
| juli | 6.0.13 | 6.0.16 |
| juli-adapters | 6.0.13 | 6.0.16 |
| log4j | 1.2.14 | 1.2.14 |
| myfaces-api | 1.2.0 | 1.2.2 |
| myfaces-impl | 1.2.0 | 1.2.2 |
| neethi | 2.0 | 2.0 |
| ognl | 2.6.9 | 2.6.9 |
| openejb | 3.0-beta-1 | 3.0 |
| openejb-axis | 3.0 | 3.0 |
| openejb-client | 3.0 | 3.0 |
| openejb-core | 3.0 | 3.0 |
| openejb-ejbd | 3.0 | 3.0 |
| openejb-javaagent | 3.0 | 3.0 |
| openejb-jee | 3.0 | 3.0 |
| openejb-loader | 3.0 | 3.0 |
| openejb-server | 3.0 | 3.0 |
| openjpa | 1.0.0 | 1.0.2 |
| pluto | 1.0.1 | 1.1.6 |
| pluto-container | NA | 1.1.6 |
| pluto-descriptor-api | NA | 1.1.6 |
| pluto-descriptor-impl | NA | 1.1.6 |
| pluto-portal-driver | NA | 1.1.6 |
| pluto-portal-driver-impl | NA | 1.1.6 |
| pluto-taglib | NA | 1.1.6 |
| tranql-connector-db2-xa | 1.3 | 1.4 |
| scout | 1.0rc1 | 1.0rc1 |
| serp | 1.11.0 | 1.11.0 |
| slf4j-api | NA | 1.4.3 |
| slf4j-jcl | NA | 1.4.3 |
| slf4j-log4j12 | NA | 1.4.3 |
| swizzle-stream | 1.0.1 | 1.0.1 |
| tomcat | 6.0.13 | 6.0.16 |
| tranql | 1.3 | 1.4 |
| tranql-connector-derby-client-local | 1.3 | 1.4 |
| tranql-connector-derby-client-xa | 1.3 | 1.4 |
| tranql-connector-derby-embed-local | 1.3 | 1.4 |
Пользовательские серверы приложений
Версия Community Edition по умолчанию представляет собой сборку сервера с полной совместимостью и поддержкой Java EE5. В зависимости от потребностей вашей компании вам может понадобиться не весь сервер, а только его часть. Допустим, если приложение относится только к Web-уровню, то понадобится только Tomcat, и можно исключить другие модули, такие как OpenEJB, Active MQ и т.п. Ранее извлечение данных о пользовательском сервере являлось операцией этапа сборки, но в Community Edition V2.1 можно получить пользовательский "снимок" существующего сервера во время его работы. Существует два метода извлечения пользовательской конфигурации сервера:
- Ориентированный на приложение: Выбирается один или несколько плагинов, необходимых для работы приложения.
- Ориентированный на функциональность: Выбирается желаемый набор функций, необходимых для среды разработки.
Более детально процесс создания пользовательского сервера будет рассмотрен в следующих разделах. Но сначала необходимо понять главную особенность архитектуры Community Edition. Это расширяемая архитектура, в которой сервер практически полностью состоит из плагинов. Каждый модуль в Community Edition представляет собой плагин, а каждый плагин имеет ряд зависимостей. Поэтому нужно гарантировать, что собираемый сервер содержит все плагины, необходимые для его нормального функционирования.
В нашем примере используется ориентированный на приложения подход к определению
содержимого пользовательского сервера. Воспользуемся примером jsp-examples-war
из имеющихся примеров Community Edition (содержатся в версии для скачивания Community Edition). Для создания пользовательской сборки сервера необходимо выполнить следующие шаги:
-
Измените план установки для приложения. Это необходимо, поскольку по умолчанию данный пример устанавливает приложение как WAR, в то время как Community Edition определяет плагин как CAR. Добавьте в план развертывания тег
<dep:type>car</dep:type>. -
Разверните пример приложения
jsp-examples-warдля Community Edition V2.1. - Запустите приложение для проверки работоспособности, перейдя по ссылке http://localhost:8080/jsp-examples/.
- Далее требуется определить функциональные компоненты и зависимости, необходимые для данного приложения. Этот шаг можно упростить, воспользовавшись портлетом Dependency Viewer в административной консоли. Запустите административную консоль при помощи ссылки http://localhost:8080/console/.
-
Войдите в систему, используя принятое по умолчанию имя пользователя
systemи парольmanager. -
На стартовой странице в папке Debug Views запустите портлет Dependency Viewer (см. рис. 1):
Рисунок 1. Портлет Dependency Viewer в административной консоли
-
Поскольку мы развернули Web-приложение, выберите WebModule. В пункте WebModule выберите компонент org.apache.geronimo.applications.examples/geronimo-jsp- examples/2.1.0.0/car-> dependencies , в котором содержатся различные зависимости, необходимые Web-приложению (см. рис. 2):
Рисунок 2. Зависимости для приложения jsp-examples-war
- Чтобы получить рабочий сервер с минимальным набором функций, необходимо также установить плагин geronimo-boilerplate-minimal для запуска, остановки и прочих выполняемых операций.
Теперь зависимости для нашего пользовательского сервера определены. Далее укомплектуем пользовательский сервер всеми необходимыми компонентами:
-
В Административной консоли в папке Applications выбираем Plugins, как показано на рисунке 3:
Рисунок 3. Портлет Plugin в Административной консоли
-
Далее выбираем Assemble a server. В появившемся окне вводим значение
org.apache.geronimo.customserverдля поля groupId и artifactId дляTestServer(см. рис. 4):
Рисунок 4. Свойства собираемого сервера
-
Далее нужно выбрать следующие плагины в появившемся списке Plugins in local server и нажать кнопку Assemble.
- com.ibm.wasce.assemblies/wasce-boilerplate-minimal/2.1.0.0/jar
- org.apache.geronimo.applications.examples/geronimo-jsp-examples/2.1.0.0/car
- org.apache.geronimo.configs/axis/2.1.1/car
- org.apache.geronimo.configs/axis2/2.1.1/car
- org.apache.geronimo.configs/j2ee-corba-yoko/2.1.1/car
- org.apache.geronimo.configs/jasper/2.1.1/car
- org.apache.geronimo.configs/openjpa/2.1.1/car
- org.apache.geronimo.configs/tomcat6/2.1.1/car
Рисунок 5. Выбор плагинов
-
В следующем окне (рисунок 6) будет отображаться список всех плагинов, выбранных для пользовательского сервера. Нажмите кнопку Install.
Рисунок 6. Перечень всех плагинов, включенных в пользовательский сервер
-
На следующем экране (рисунок 7) должно появиться сообщение об успешной сборке сервера, содержащее также информацию о местонахождении пользовательского сервера (в нашем случае это путь
<WASCE_HOME>/var/temp/assembly). Нажмите кнопку Done.
Рисунок 7. Успешная сборка сервера
-
Далее нужно протестировать собранный сервер. Завершите работу сервера и запустите новый с помощью
<WASCE_HOME>\var\temp\assembly\bin\startup.bat. - После этого можно загрузить приложение, используя ссылку http://localhost:8080/jsp-examples/.
Обратите внимание, что укомплектованный нами сервер содержит в себе минимальный набор функциональных возможностей: графический интерфейс административной консоли будет недоступен.
Для удобства вы можете добавить в ваш пользовательский сервер следующие плагины:
-
org.apache.geronimo.plugins/console-tomcat/2.1.1/car:Графический интерфейс административной консоли -
org.apache.geronimo.plugins/sysdb-console-tomcat/2.1.1/car:Графический интерфейс портлета Database административной консоли -
org.apache.geronimo.plugins/debugviews-console-tomcat/2.1.1/car:Графический интерфейс портлета Debug Views административной консоли -
org.apache.geronimo.plugins/activemq-console-tomcat/2.1.1/car:Графический интерфейс консоли JMS административной консоли -
org.apache.geronimo.plugins/plancreator-console-tomcat/2.1.1/car:Графический интерфейс портлета Deployment Plan Creator административной консоли
Как видно из нашего примера, сборка пользовательского сервера – это мощное средство, эффективно использующее расширяемую модульную архитектуру Geronimo. Можно легко комплектовать различные типы серверов из существующего работающего сервера.
Мастер создания плана развертывания
Для упрощения процесса создания планов развертывания для каждого конкретного сервера (например, geronimo-web.xml), в административной консоли Community Edition теперь есть новый портлет, который называется Plan Creator. Plan Creator берет архив Web-приложения (WAR) и предлагает пользователю пошагово выполнить несколько действий, на основе которых генерируется файл geronimo-web.xml. В настоящее время пока не поддерживается создание файлов geronimo-application.xml и openejb-jar.xml из EAR и EJB-JAR архивов.
Основные особенности Deployment Plan Creator:
- Ссылки на объекты EJB, локальные объекты EJB Local, пул соединений JDBC, фабрика соединений JMS, получатель JMS, сеанс JavaMail и Web-сервисы, объявленные в Web-приложениях, обнаруживаются автоматически. Их разрешение производится путем перечисления доступных в среде сервера ресурсов, с которыми их можно связать.
- Любая из вышеперечисленных ссылок, объявленная внутри Java-класса с помощью аннотаций, также обнаруживается автоматически.
- Упрощенное конфигурирование параметров безопасности.
Покажем эти характеристики на приложении jsp-examples-war, которое имеется в примерах Community Edition.
-
В
jsp-examples-war-2.1.0.0.war,найдите план развертывания Web-приложения(geronimo-web.xml), расположенный в архиве приложения в WEB-INF.Этот план развертывания приведен в листинге 1:
Листинг 1. План развертывания geronimo-web.xml
<Web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/Web-2.0"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.2"
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2">
<dep:environment>
<dep:moduleId>
<dep:groupId>org.apache.geronimo.applications.examples</dep:groupId>
<dep:artifactId>geronimo-jsp-examples</dep:artifactId>
<dep:version>2.1.0.0</dep:version>
</dep:moduleId>
<dep:dependencies/>
<dep:hidden-classes/>
<dep:non-overridable-classes/>
</dep:environment>
<context-root>/jsp-examples</context-root>
<!--<context-priority-classloader>false</context-priority-classloader>-->
<security-realm-name>geronimo-admin</security-realm-name>
<sec:security>
<sec:default-principal>
<sec:principal class="org.apache.geronimo.security.realm.providers.
GeronimoUserPrincipal" name="anonymous"/>
</sec:default-principal>
<sec:role-mappings>
<sec:role role-name="tomcat">
<sec:principal class="org.apache.geronimo.security.realm.providers.
GeronimoGroupPrincipal"name="admin"/>
</sec:role>
</sec:role-mappings>
</sec:security>
</Web-app>
|
-
Разархивируйте план развертывания
jsp-examples-war-2.1.0.0.war. - Запустите административную консоль Community Edition и войдите в нее, используя заданные по умолчанию имя пользователя и пароль.
-
В папке Applications выберите пункт Plan Creator, как показано на рисунке 8:
Рисунок 8. Портлет Plan Creator в административной консоли
-
В появившемся окне нажмите кнопку Browse и выберите jsp-examples-war-2.1.0.0.war. Затем нажмите кнопку Configure (см. рис. 9):
Рисунок 9. Выбор Web-архива для создания плана развертывания
-
На следующем экране предлагается определить основные параметры идентификации Web-приложения и пути к расположению классов для нашей среды. Можно установить WebContextRoot равным
PlanCreatorTest, а остальные значения оставить как есть (см. рис. 10). Нажмите кнопку Next.
Рисунок 10. Выбор основных параметров идентификации Web-приложения и путей для классов
-
Следующий экран содержит информацию о конфигурации области защиты и связи ролей. Выберите значение
Principal для поля role1 . После этого появятся дополнительные поля Name и Class. Введите имя
TestUserи выберите User Principal в качестве значения для поля Class (см. рис. 11). Нажмите Add.
Рисунок 11. Выбор класса
Теперь к плану развертывания должны добавиться значения Principal, Name и Class, как показано на рисунке 12:
Рисунок 12. Конфигурирование связей ролей для role1
-
Далее выберите значение Principal для поля tomcat. Назовите его
TestGroupи укажите значение Group Principal для поля Class. Нажмите Add (см. рисунок 13).
Рисунок 13. Конфигурирование связей ролей для tomcat
К плану развертывания должны добавиться значения Principal, Name и Class. Нажмите кнопку Next.
-
В следующем окне предлагается выбрать зависимости для приложения. Наше приложение не имеет зависимостей, поэтому оставляем принятые по умолчанию значения. Можно было бы выбрать, например, такие зависимости, как ejb, database pool, jms resources и т.д., но по сути они нам не нужны. Нажмите кнопку Next.
- Следующий экран отображает сгенерированный план развертывания, показанный в листинге 2:
Листинг 2. Сгенерированный план развертывания
<?xml version="1.0" encoding="UTF-8"?>
<Web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/Web-2.0.1">
<dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2">
<dep:moduleId>
<dep:groupId>default</dep:groupId>
<dep:artifactId>jsp-examples-war-2.1.0.0</dep:artifactId>
<dep:version>1.0</dep:version>
<dep:type>war</dep:type>
</dep:moduleId>
</dep:environment>
<context-root>PlanCreatorTest</context-root>
<security-realm-name>geronimo-admin</security-realm-name>
<app:security xsi:type="sec:securityType"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0"
xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<sec:role-mappings>
<sec:role role-name="role1">
<sec:principal name="TestUser " class=
"org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"/>
</sec:role>
<sec:role role-name="tomcat">
<sec:principal name="TestGroup " class=
"org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"/>
</sec:role>
</sec:role-mappings>
</app:security>
</Web-app>
|
-
Нажмите кнопку Deploy WAR (см. рис. 14):
Рисунок 14. Развертывание WAR с помощью плана развертывания
-
Должно появиться сообщение об успешном развертывании нашего Web-приложения. Выберите ссылку Launch Web App для загрузки Web-приложения, как показано на рисунке 15:
Рисунок 15. Загрузка Web-приложения
-
Как видно на рисунке 16, приложение запускается с корневым контекстом
PlanCreatorTest.Однако для изначального плана развертывания (входившего в пакет программ Web-приложения) корневым контекстом было значениеjsp-examples.
Рисунок 16. Запущенное приложение с корневым контекстом PlanCreatorTest.
GShell - это среда для создания приложений на базе командной строки с расширенными функциональными возможностями. GShell является оболочкой для выполнения большинства команд Community Edition. Некоторые из них перечислены в таблице 2:
| Таблица 2. Команды Gshell | |
| Команды | Описание |
|---|---|
| help или ? | Отображает справочную информацию |
| echo или print | Печатает аргументы в STDOUT |
| source или . | Загружает файл или адрес URL в текущую оболочку |
| clear | Очищает экран терминала |
| set | Устанавливает значение переменной |
| unset | Очищает значение переменной |
| exit или quit | Выходит из оболочки GShell |
| geronimo/start-server | Запускает сервер |
| geronimo/stop-server | Останавливает сервер |
| geronimo/wait-for-server | Задает параметры ожидания запуска сервера |
| geronimo/start-client | Запускает клиента приложения |
| deploy/connect | Устанавливает соединение с сервером WASCE |
| deploy/disconnect | Обрывает соединение с сервером WASCE |
| deploy/deploy | Развертывает модуль |
| deploy/redeploy | Повторно развертывает модуль |
| deploy/undeploy | Выгружает (отменяет развертывание) модуль |
| deploy/distribute | Рассылает модуль |
| deploy/start | Запускает модуль |
| deploy/restart | Перезапускает модуль |
| deploy/stop | Останавливает модуль |
| deploy/list-modules | Показывает список модулей |
| deploy/list-targets | Показывает список целевых объектов |
| deploy/list-plugins | Показывает список плагинов |
| deploy/install-library | Устанавливает библиотеку |
| deploy/install-plugin | Устанавливает плагин |
| deploy/assemble | Извлекает сервер WASCE из текущего сервера |
Давайте рассмотрим пример использования оболочки GShell. В Community Edition есть командный файл gsh.bat для запуска GShell, находящийся в каталоге <WASCE_HOME>/bin. Запустите GShell вызовом gsh.bat из командной строки (см. рис. 17):
Рисунок 17. Запуск GShell
Для запуска сервера с помощью GShell введите команду geronimo/start-server, как показано на рисунке 18:
Рисунок 18. Запуск сервера с помощью GShell
Для отображения списка модулей, развернутых на сервере, введите команду deploy/list-modules. Используйте заданные по умолчанию имя пользователя и пароль (см. рис. 19):
Рисунок 19. Отображение списка модулей, развернутых на сервере
В административной консоли Community Edition, в папке Applications имеются всевозможные портлеты (WebAppWAR, системные модули, приложения EAR, EJB JAR, коннекторы J2EE, клиенты приложений), которые отображают различные модули (модули Web-приложений, системные модули, модули серверного приложения, EJB-модули, модули коннекторов, клиенты приложений соответственно). Из этих портлетов можно запускать, останавливать, перезапускать и деинсталлировать различные модули. Появляющаяся по умолчанию консоль отображает эти операции над модулями недоступными для выбора.
Режим "Эксперт" позволяет привилегированным пользователям получать больший контроль над запущенными процессами сервера Community Edition. По умолчанию изменять критические процессы нельзя. Однако опция Expert mode, встроенная во все вышеперечисленные портлеты, предоставляет полный контроль над этими процессами. Следующий пример показывает, как использовать режим «Эксперт» в Community Edition.
- Запустите административную консоль и войдите в нее с заданными по умолчанию именем и паролем
-
В папке Applications выберите пункт WebAppWARs. Как показано на рисунке 20, команды stop, restart и uninstall для различных модулей недоступны для выбора (отображены серым цветом).
Рисунок 20. Вызываемое по умолчанию отображение портлета WebAppWARs
-
Установите флажок Expert User в левой верхней части экрана Installed Web Applications. Вы увидите, что ранее отображенные серым команды стали доступными (см. рис. 21). Теперь у вас появился полный контроль над всеми модулями, установленными на сервере.
Рисунок 21. Портлет WebAppWAR после включения режима Expert User
Очень важным аспектом является работоспособность сервера; предупреждение сбоев на сервере очень важно для любого запущенного приложения. Обычно сбои на сервере приводят к последующему исправлению многочисленных ошибок и потере важных данных. Для исключения аварийных ситуаций необходимо постоянно следить за состоянием сервера, а также менять его настройки так, чтобы он функционировал на оптимальном уровне. В свою очередь, такой мониторинг увеличивает производительность системы. Для решения этого вопроса административная консоль Community Edition V2.1 содержит новый плагин Monitoring, который постоянно отслеживает различные статистические данные, а именно:
- Transaction Manager (менеджер транзакций)
- JVM (виртуальная машина Java)
- AJP/Web/WebSSL connector (коннектор AJP/Web/WebSSL)
- ThreadPool (пул потоков)
- Web application (Web-приложение)
В то же время чаще всего необходимо следить за состоянием определенных компонентов, а не активировать все подряд. Существует неизменное правило - чем больше компонентов вы отслеживаете, тем больше это сказывается на производительности сервера.
Инсталляция Community Edition по умолчанию содержит в себе плагин Monitoring. Этот портлет состоит из трех областей: View (представление), Servers (серверы) и Graphs (графики). Давайте рассмотрим их поочередно на примере:
- Запустите административную консоль и войдите в систему под заданными по умолчанию именем и паролем.
-
В окне навигатора в папке Server выберите пункт Monitoring для запуска портлета. Вы увидите три области View, Servers и Graphs. Справа представлены возможные действия +Create View, +Add Server, +Add Graph (см. рис. 22). Они служат для добавления нового представления, сервера или графика соответственно.
Рисунок 22. Установленный по умолчанию экран портлета Monitoring
Прежде чем начать работу с плагином Monitoring, необходимо добавить сервер. В этой рабочей области можно добавить несколько экземпляров Community Edition, чтобы централизованно отслеживать состояние нескольких машин. Для добавления сервера в плагине Monitoring выполните следующие действия:
-
Выберите опцию Add a Server (см. рис. 23):
Рисунок 23. Добавление сервера в портлете Monitoring
-
В следующем окне введите значения различных полей, как показано на рисунке 24, и нажмите кнопку Add.
- Name: MyServer
- IP/Hostname: localhost
- Protocol: EJB
- Port: 4201
- Username: system
- Password: manager
Рисунок 24. Конфигурирование сервера в портлете Monitoring
-
Произойдет перенаправление к стартовой странице портлета Monitoring, но теперь вы увидите сообщение об успешном добавлении сервера (см. рис. 25). Также область Servers будет содержать в себе новую запись под названием MyServer. Текущий статус запроса -
stopped. Нажмите +Enable Query для начала сбора существующих данных.
Рисунок 25. Активация сбора статистических данных
-
Теперь статус запроса, производящего сбор данных каждые 5 минут, изменится на Online. Его можно изменить выбором опции Edit поля Actions..
-
В появившемся окне установите период сбора информации (Snapshot Duration), равный 1 минуте, и нажмите кнопку Save. Появится сообщение “Server has been updated” (Сервер обновлен). Выберите пункт Monitoring для возвращения к стартовому окну портлета.
Рисунок 26. Редактирование конфигурации сервера
-
В области Server выберите опцию MyServer для отображения разнообразных статистических данных, которые отслеживаются сервером. На рисунке 27 показана статистика:
Рисунок 27. Различные статистические данные, собираемые конфигурацией MyServer
Давайте рассмотрим различные поля и функции этой страницы более детально:
- My Server отображает статус, время создания, время изменения, IP-адрес сервера и периодичность сбора статистики для данной конфигурации.
-
Live Statistics отображает компоненты, состояние которых непосредственно отслеживается (например, JVM, Tomcat AJP Connector, Tomcat Web Connector, Tomcat Web SSL Connector, activemq-console-tomcat). Также можно видеть два Web-приложения, включенных в мониторинг:
SimpleJSFиjsp-examples-war-2.1.0.0. Каждому компоненту поставлены в соответствие различные поля. - В правой части экрана расположена панель Statistics Collected, отображающая текущую статистику компонентов. У каждого поля есть значок ×, позволяющий остановить мониторинг конкретного компонента.
- Панель Statistics Available показывает компоненты, которые могут быть включены в текущую конфигурацию мониторинга. Нажав значок + , можно добавить компонент в панель Statistics Collected, что повлечет за собой начало мониторинга добавленного компонента.
- На панели Actions расположен ряд опций для настройки текущей конфигурации мониторинга сервера.
-
Попробуйте выбрать какую-нибудь ссылку в области Live Statistics. Давайте выберем ссылку Busy Threads Max, относящуюся к компонентуTomcatAJPConnector, как показано на рисунке 28:
Рисунок 28. Выбор ссылки Busy Thread Max компонента TomcatAJPConnector
-
Эта ссылка запускает портлет для добавления графа для выбранного свойства (см. рис. 29). Это наиболее простой способ создания графов, поскольку некоторые поля заполняются по умолчанию. Однако в следующем разделе мы рассмотрим, как создать график "с нуля".
Рисунок 29. Добавление графика через конфигурацию MyServer
Эту область можно использовать для создания пользовательских графиков, а также для выполнения математических операций (сложение, вычитание, деление и умножение) над двумя наборами статистических данных. Давайте добавим график для имеющейся конфигурации MyServer .
-
В портлете Monitoring выберите действие +Add Graph (см. рис. 30):
Рисунок 30. Добавление диаграммы
-
В появившемся окне введите следующие значения (см. рис. 31) и нажмите кнопку Add.
- Server: MyServer-localhost
- Name: TomcatAJP_BusyThread
- Description: This is to monitor the Busy thread Max for Tomcat AJP Connector
- X Axis label: Busy Threads
- Y Axis label: Time
- Timeframe: 5
- Mbean: TomcatAJPConnector
- Data series: As-is; Busy Threads Max
- Math operation: none
Рисунок 31. Заполнение формы для добавления графика
-
Вы будете возвращены в стартовое окно портлета Monitoring с сообщением об успешном добавлении графика. Выберите добавленный график, чтобы он отобразился на экране (см. рис.32):
Рисунок 32. Отображение графика
Поскольку существует множество видов графиков, Community Edition использует "представления" для объединения взаимосвязанных графиков, что облегчает их использование. Например, можно объединить все графики, относящиеся к определенному серверу, или графики, показывающие производительность серверов. Давайте посмотрим, как создается представление:
- В портлете Monitoring выберите действие +Create View.
-
В следующем окне введите название и описание нового представления. Также там имеется поле Graphs, в котором содержится список графиков, доступных для данной конфигурации. Поскольку мы добавили только один график -- выбор у нас небольшой. Поставьте на нем галочку и сохраните конфигурацию (см. рис. 33):
Рисунок 33. Настройка представления
-
Вы возвратитесь в стартовое окно портлета Monitoring. Выберите пункт MyView для просмотра текущей конфигурации, где отобразится добавленный ранее график.
Рисунок 34. Отображение конфигурации MyView
Кластер серверов приложений - это группа серверов, предоставляющих такие корпоративные сервисы, как Servlets и JavaServer Pages (JSP), как один сервер. Для синхронизации данных серверы, которые обычно запущены в отдельных системах, обмениваются сообщениями, благодаря чему, любой отдельный узел может обрабатывать запросы распределенного приложения и брать на себя пользовательскую сессию в случае сбоя другого узла. Объединение нескольких серверов в кластер обычно называется кластеризацией.
В настоящее время в Community Edition поддержка кластеров реализована с помощью функции репликации сеансов, предусмотренной в Apache Tomcat или WADI (распределенная инфраструктура приложений WADI).
Кластеры Tomcat имеют некоторые функциональные ограничения.
- Они не поддерживают репликацию сеансовых объектов Enterprise JavaBeans (EJB) с сохранением состояния. Поэтому нужно избегать применения таких сеансовых объектов в своих распределенных приложениях.
- Они не поддерживают репликацию динамических обновлений интерфейса Java Naming and Directory Interface (JNDI). Поэтому необходимо сконфигурировать все имена JNDI, используемые распределенными приложениями, на каждом узле кластера.
- Они не поддерживают репликацию распределяемых Web-приложений на других узлах кластера. Поэтому необходимо развертывать такие приложения на каждом узле.
В Community Edition V2.1 поддержка кластеров Tomcat усовершенствована:
- Теперь можно использовать WADI с конфигурациями Tomcat в Community Edition, поддерживать репликацию состояния http-сессии для нескольких серверов Community Edition.
- Можно развертывать приложения для групп серверов Community Edition, определенных администратором системы, что облегчает управление отдельным приложением на нескольких серверах Community Edition.
Также теперь можно использовать WADI для поддержки кластеризации Web-приложений для конфигураций, использующих Web-контейнеры Tomcat. Чтобы объединить эти компоненты, их дескрипторы развертывания дополгяются XML-элементами. Эти элементы определяют различные параметры кластеризации, контролирующие процессы взаимодействия внутренних компонентов WADI, а также их настройку при развертывании приложения.
WADI также обеспечивает поддержку развертывания на уровне серверных комплексов (farming) :
- Функция Farming обеспечивает оперативное развертывание Web-приложений на уровне кластера. Web-приложение развертывают в серверном комплексе (server farm) путем простого копирования его WAR-файла на один узел кластера, а функция farming обеспечивает развертывание Web-приложения на весь кластер. Аналогично, удаление WAR-файла на отдельном кластерном узле приводит к отмене развертывания Web-приложения на всех узлах кластера. Таким образом, чтобы развернуть конфигурацию для кластера серверов Community Edition, достаточно выполнить один логический шаг развертывания. После развертывания на кластере конфигурация можно прозрачным образом запускать, останавливать и удалять на всех узлах кластера
- Функция Развертывание на комплексе серверов -- развертывание приложения на сконфигурированных элементах кластера.
Для получения дополнительной информации по кластеризации обратитесь к документации Community Edition.
Плагин Community Edition Eclipse
У плагина Community Edition Eclipse (далее WEP) v2.1 произошло важное изменение архитектурной основы модели - переход от Eclipse Modelling Framework (EMF) к Java-архитектуре на базе XML Binding (JAXB). Это было сделано для обеспечения возможности использовать некоторые существенные усовершенствования в WEP Deployment Plan Editors. Так что можно ожидать, что в будущих выпусках появятся редакторы с более развитой логикой!
Кроме того, в версии v2.1 WEP занимает гораздо меньше памяти -– всего 5 МБ вместо 13 МБ, как было в предыдущем релизе. В дополнение к этому исправлено несколько ошибок, что облегчает использование WEP.
Другие функциональные возможности
- Теперь административная консоль основана на компонентах, соответствующих функциональной структуре сервера. При создании пользовательской сборки сервера в ее состав включаются только те портлеты, которые используются выбранными функциями или модулями.
- Community Edition V2.1 теперь поддерживает JDBC-драйверы для IBM DB2 8.2, 9.1 и 9.5, а также Oracle Real Application Cluster (RAC).
- Версия Community Edition V2.1 совместима с Red Hat Fedora 9, Ubuntu 8.04 Long Term Support (LTS) и рекомендована для ОС AIX Version 6 Update 1. Поддержка Java включает в себя рекомендации для IBM Java 32bit/64 bit SE 5 SR6b и совместима с Sun Java 32 bit SE 5 Update 15 или более поздними версиями.
-
Добавлены несколько новых примеров, в том числе:
- Bank демонстрирует технологии EJB 3.0 Session Bean, JPA и OpenEJB.
- jms-mdb-sample показывает использование Message-Driven Bean в EJB 3.0
- sendmail демонстрирует работу Mail Session в Community Edition.
-
Консоль Community Edition получила новый внешний вид и функции. В административную консоль внесен ряд изменений для усовершенствования взаимодействия с пользователем. Изменения, в частности, коснулись названий ссылок в левой части экрана навигатора для улучшения удобства их использования, например, в папке Server портлет
JVMбыл переименован вJava System Info,Common Libsв папкеRepository. - В Community Edition V2.1 обновлены многие модули компонентов. Ознакомьтесь с таблицей 1, содержащей обновленный список модулей.
- Файл config.xml в Community Edition V2.1 теперь включает в себя всевозможные свойства для Tomcat Web, AJP и SSL.
-
Новый объект gbean
TomcatClusteringBuilderулучшает поддержку кластеризации. ФайлConfig-substitution.propertiesтеперь содержит несколько новых конфигурационных параметров, в том числеMaxThreadPoolSize, ResourceBindingsQuery, clusterName, ResourceBindingsFormatиTmId.
Как говорится: “зрелость приходит по мере освоения всех возможностей”. Новые опции, исследованные в этой версии, приближают версию Community Edition к зрелости. Три года работы команды Community Edition -- скрупулезной разработки, тестирования, сбора отзывов -- были вознаграждены выпуском данной версии, а продолжающаяся в данный момент разработка ведет к постоянным усовершенствованиям. Как мы узнали, в этой версии пользователь может выполнять все команды Geronimo при помощи среды GShell, создавать сборки сервера из собственного набора и полностью управлять сервером посредством экспертного режима и портлета мониторинга. Множество других возможностей, появившихся в Community Edition V2.1, облегчили процессы конфигурирования, разработки, развертывания и запуска приложений. Мы лишь поверхностно рассмотрели основные изменения, появившиеся в новой версии. Более детально вы сможете изучить новые функции, посетив сайты из раздела Ресурсы; данная статья -- всего лишь начало.
Научиться
- Оригинал статьи: What’s new in WebSphere Application Server Community Edition V2.1 (EN)
- Миграция из Apache Tomcat Version 6.0.x в WebSphere Application Server Community Edition V2.1 (EN)
- Разработка
JPA-приложений с помощью WebSphere Application Server Community Edition (EN)
- Сайт поддержки Community Edition (EN)
- Документация по WebSphere Application Server Community Edition (EN)
- Примеры WebSphere
Application Server Community Edition (EN)
- Сайт Apache Geronimo (EN)
- Разработка приложений на всех API-интерфейсах Java EE5 (EN)
-
Знакомство с Java EE 5 (EN)
- Кластеризация в Community Edition (EN)
- Примеры Apache Geronimo (EN)
-
Предложения технической поддержки для WebSphere Application Server Community Edition (EN)
-
Ресурсы WebSphere Application Server Community Edition (EN)
- Разделы Open Source на сайте developerWorks (EN)
Получить продукты и технологии
- Скачайте Community Edition (EN)
- Обновленный плагин Community Edition Eclipse (EN)
-
ActiveMQ (EN)
-
Apache Tomcat (EN)
-
OpenEJB (EN)
Обсудить
- Форум developerWorks по WebSphere Application Server Community Edition и Apache Geronimo
- форум developerWorks Open Source
Ашиш Джайн (Ashish Jain), инженер по программному обеспечению, в настоящее время работает на 3-м уровне технической поддержки продукта IBM WebSphere Application Server Community Edition. Он имеет степень бакалавра по вычислительной технике, полученной в университете NITK Surathkal. А. Джейн поступил на работу в IBM в 2005 г. в качестве ELTP.