четверг, 26 августа 2010 г.

Запускаем GlassFish v3 на OSGi-фреймворке Equinox


Введение


Одним из преимуществ сервера приложений GlassFish v3 является модульность, которая обеспечивается за счет использования технологии OSGi. По-умолчанию, в качестве OSGi-фреймворка для GlassFish используется Apache Felix, однако имеется возможность запускать данный сервер приложений и поверх другого популярного OSGi-фреймворка с открытым исходным кодом - Eclipse Equinox. Напомню, что на базе Eclipse Equinox построена широкоиспользуемая Java-разработчиками IDE Eclipse, да и вообще вся платформа Eclipse RCP/RAP.

Внимание! Из-за различий в лицензиях GlassFish и Eclipse Equinox сам фреймворк Equinox не поставляется вместе с сервером приложений. Нужно или скачать последнюю версию данного фреймворка или скопировать Jar-файл org.eclipse.osgi_3.x.x.vxxx.jar из имеющейся у вас поставки Eclipse в каталог $GlassFish_HOME/osgi/equinox.

Существует два способа заставить GlassFish запускаться на Equinox: использование переменной окружения GlassFish_Platform и использование опции JVM -DGlassFish_Platform. Рассмотрим эти способы подробнее.

1. Использование переменных окружения


В операционной системе Windows можно задать как глобальные переменные окружения, так и переменные окружения для текущего сеанса работы с командным интерпретатором. Глобальные переменные окружения задаются через панель управления в оснастке Система. Чтобы GlassFish запускался на Equinox, необходимо создать переменную окружения с именем GlassFish_Platform и значением Equinox:



Далее можно запустить сервер приложений, используя команду asadmin start-domain:



Убедиться в том, что GlassFish запущен на Equinox, можно прочитав лог запуска, расположенный по адресу $GlassFish_HOME/domains/domain1/logs/server.log, там должны быть строчки примерно следующего содержания:

[#|2010-08-26T10:57:25.656+0400|INFO|glassfish3.0.1|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=11;_ThreadName=Thread-2;|GlassFish Server Open Source Edition 3.0.1 (22) startup time : Equinox(33330ms) startup services(14744ms) total(48074ms)|#]


Следует обратить внимание на startup time: Equinox.

Временное значение переменной окружения, действующее только в течении одного сеанса работы с командным интерпретатором задается с помощью команды set:



В данном случае GlassFish так же будет запущен поверх OSGi-фреймворка Equinox.

Переменные окружения так же действуют, если запускать сервер приложений не командой asadmin, а непосредственно с помощью вызова JVM:



2. Использование опций JVM


При запуске сервера приложений с помощью команды java -jar можно использовать опцию командной строки -DGlassFish_Platform=Equinox:



Данный способ удобно использовать, когда нет возможности поменять значения переменных окружения. Стоит помнить, что если опция JVM противоречит значению переменной окружения, то будет использоваться опция JVM:



3. Использование консоли администрирования GlassFish


Опции JVM не всегда удобно указывать при запуске сервера приложений с помощью команды java -jar, более того, не всегда удобно использовать саму данную команду. Однако, с помощью консоли администрирования GlassFish можно указывать значения опций JVM, которые будут использоваться при старте сервера приложений с помощью команды asadmin start-domain. Данные опции можно изменять/добавлять/удалять на вкладке JVM Options пункта меню Configuration/JVM Settings:



Понятно, что данные опции JVM будут недоступны при запуске сервера с помощью команды java -jar.

4. Запуск GlassFish из Eclipse


В прошлой заметке мы рассмотрели как настроить взаимодействие Eclipse WTP - GlassFish. Нужно помнить, что из Eclipse GlassFish запускается с помощью выполнения команды asadmin start-domain, поэтому в данном случае доступны как настройки, заданные с помощью переменных окружения, так и опции JVM, указанные в консоли администрирования. Соответственно, непосредственно в Eclipse ничего настраивать не нужно, а запуск сервера приложений ничем не отличается от запуска с помощью командной строки:



5. Измененное расположение OSGi-фреймворка Equinox


По-умолчанию фреймворк Equinox (т.е. файл org.eclipse.osgi_3.x.x.vxxx.jar и каталог configuration) должны располагаться в каталоге $GlassFish_HOME/osgi/equinox, однако это требование не является обязательным. Можно скопировать данные файлы в любой желаемый каталог, однако необходимо указать серверу приложений его местонахождение. Делается это установкой переменной окружения EQUINOX_HOME (к сожалению, опция JVM -DEQUINOX_HOME=... не работает). Так же необходимо отредактировать файл configuration/config.ini, указав верное значение для параметра osgi.bundles. По-умолчанию значение данного параметра равно пути к файлу modules/osgi-main.jar относительно каталога $GlassFish_HOME/osgi/equinox. Необходимо или прописать абсолютный путь, или путь относительно каталога $EQUINOX_HOME.

Заключение


Если вы привыкли работать с OSGi-фреймворком Equinox, а не Apache Felix, то GlassFish позволяет это. При работе с новыми версиями Equinox, начиная с 3.5, стали доступными компоненты действующей сейчас спецификации OSGi 4.2, в частности - Declarative Services 1.1. К сожалению, GlassFish пока не поддерживает другие OSGi-фреймворки, что связано с различными механизмами запуска, которые эти фреймворки используют, однако в OSGi 4.2 появился единый для всех фреймворков механизм запуска. Как только GlassFish начнет использовать данную спецификацию, его можно будет запускать на всех фреймворках, поддерживающих спецификацию 4.2, что не может не радовать.

Понравилось сообщение - подпишитесь на блог или читайте меня в twitter

Комментариев нет:

Отправить комментарий

Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!