среда, 18 августа 2010 г.

Настраиваем взаимодействие Eclipse - GlassFish v3


Сервер приложений GlassFish является Reference Implementation спецификации JavaEE 6 (так же известной под названием JSR-316), поэтому знакомство с ним будет полезно любому разработчику, планирующему использовать как весь стек JavaEE, так и некоторые его компоненты.

Интегрированная среда разработки Eclipse позволяет упростить взаимодействие с сервером приложений, в частности - автоматизировать создание специфичной для него структуры проекта, облегчить запуск/останов сервера и разворачивание на нем разрабатываемого приложения. Так же очень полезной функцией IDE является обеспечение горячего разворачивания приложения - возможности заменять классы и статический контент "на лету", т.е. непосредственно после компиляции, не прибегая каждый раз к сборке архивов модулей (war, ear, rar, jar) и переустановке приложения целиком. Данная возможность существенно ускоряет разработку и отладку приложения.

Однако, прежде чем использовать богатые возможности среды разработки Eclipse совместно с сервером приложений GlassFish - ее нужно настроить. Существует два варианта:

  • Использование GlassFish Tools Bundle for Eclipse

  • Использование Eclipse WTP с установленным GlassFish коннектором



Отличия между данными вариантами только в наборе программного обеспечения, процессе установки и используемой базовой версии Eclipse. Обеспечиваемая функциональность примерно одинакова (у варианта с Eclipse WTP она чуть богаче, в частности, в данном варианте имеется визуальный редактор web.xml).

GlassFish Tools Bundle for Eclipse
Данная программа представляет собой сборку Eclipse 3.5.1 с измененным брендингом, установленным Eclipse WTP и коннектором к GlassFish. Помимо Eclipse в поставку входит собственно GlassFish v3 и MySQL-JDBC коннектор.



Официальная страница проекта расположена здесь. Размер дистрибутива - 144 Мб.

Eclipse WTP + GlassFish коннектор
Если у вас уже установлен GlassFish и нет желания скачивать его заново или вы хотите использовать Eclipse Helios, то нужно скачать Eclipse IDE for JavaEE developers. В данную сборку входит Eclipse Helios и Eclipse WTP 3.2.1. Eclipse WTP облегчает разработку и развертывание JavaEE-приложений, динамических веб-модулей, EJB-модулей, JSP- и JSF-страниц, HTML и CSS-кода. Так же в состав Eclipse WTP входят утилиты для работы с JPA и веб-сервисами.



Eclipse WTP предоставляет слой абстракции для взаимодействия с серверами приложений и контейнерами сервлетов. Данный слой абстракции позволяет сторонним разработчикам писать свои коннекторы к конкретным серверам приложений. Некоторые коннекторы, например к Apache Tomcat, поставляются непосредственно с WTP, другие же необходимо устанавливать дополнительно, в том числе и коннектор к GlassFish.

Для установки коннектора необходимо открыть вкладку настроек Window -> Preferences -> Server -> Runtime Environments. На данной вкладке настраиваются окружения для взаимодействия с серверами-приложений. Окружение представляет собой совокупность следующих параметров: тип сервера, путь к нему и используемую JRE.



При нажатии на кнопку Add появляется список доступных типов серверов приложений, т.е. тех серверов, для которых установлены коннекторы.



Если интересующего нас сервера нет в списке, то нужно перейти по ссылке Download additional server adapters, расположенной в верхнем правом углу диалогового окна выбора сервера. Загрузится список доступных для Eclipse коннекторов, среди которых будет и Oracle GlassFish Server Tools:



После нажатия кнопки Next, появится лицензия на коннектор, с которой можно согласиться (галочка I accept ...) или не согласиться (I do not accept..., соответственно). В случае согласия с лицензией, станет активной кнопка Finish, при нажатии на которую начнется установка коннектора.



По окончании установки нам предложат перезапустить Eclipse. После перезапуска появится обновленная страница приветствия, содержащая пункт GlassFish Application Server Extension. Появление данного пункта свидетельствует о том, что коннектор успешно установлен.



Вернемся к настройке окружения работы сервера, доступной на вкладке Window -> Preferences -> Server -> Runtime Environments. Теперь в диалоговом окне New Server Runtime Environment, всплывающему по нажатию кнопки Add, присутствует каталог GlassFish и пункты GlassFish 2.1 JavaEE 5, GlassFish Server Open Source Edition 3 (JavaEE 6) и Sailfin v2):



Выберем пункт меню GlassFish Server Open Source Edition 3 (JavaEE 6) - появится диалоговое окно настройки окружения для GlassFish v3, на котором можно указать JRE, используемую сервером, и каталог, в который установлен GlassFish, обычно это - C:/glassfishv3/glassfish:



Если в указанном каталоге нет сервера, то станет активной кнопка Install Server, позволяющая скачать и развернуть сервер приложений GlassFish в указанный каталог. Если же сервер в выбранном каталоге уже присутствует, то активной станет кнопка Finish, при нажатии на которую создастся новая настройка окружения для сервера.



После создания окружения для сервера приложений необходимо создать т.н. локальный сервер - некоторую настройку Eclipse, через которую будет осуществляться взаимодействие с выбранным сервером приложений. Локальный сервер можно запускать в режиме исполнения и в режиме отладки, останавливать, разворачивать на нем приложения - проекты из открытого воркспейса, имеющие необходимый тип (например, на сервере типа Apache Tomcat можно разворачивать проекты типа Dynamic Web Project). Список локальных серверов представлен в виде Servers:



Чтобы создать новый локальный сервер необходимо выбрать пункт New -> Server из контекстного меню вида:



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



После нажатия на кнопку Next станет доступна вкладка, на которой настраиваются параметры доступа к серверу - домен (по-умолчанию - domain1), а также логин и пароль администратора, которые были указаны при установке GlassFish.



На данном этапе можно завершить настройку локального сервера, нажав кнопку Finish или продолжить, указав разворачиваемые на сервере проекты из воркспейса, нажав кнопку Next. При нажатии данной кнопки откроется вкладка выбора проектов для разворачивания на сервере:



Вновь созданный локальный сервер будет представлен в виде Servers следующим образом:



Можно заметить, что стали активными кнопки запуска сервера в режиме отладки и в режиме исполнения. Так же теперь можно настроить профилирование веб-приложения. Последняя кнопка - Publish to the server - служит для того, чтобы быстро обновить измененный статический контент приложения. Под статическим контентом понимаются JSP, XHTML, CSS, JPEG, GIF, PNG, XML-файлы.

Для того, чтобы настроить автоматическое обновление class-файлов, необходимо два раза щелкнуть по локальному серверу - откроется окно редактирования настроек. В правом верхнем углу расположена настройка Publishing. Для себя выбрал вариант этой настройки под названием Automatically publish after a build event, который обозначает обновление class-файлов после сборки проекта. Параметр Publishing interval обозначает промежуток времени после сборки, через который обновится развернутое на сервере приложение.



Eclipse WTP коннектор к GlassFish обеспечивает так же дополнительные возможности. В частности, он содержит собственный редактор XHTML-файлов, мастер для создания EJB Timer'ов и то, чего очень не хватает в ванильном WTP - поддержку разработки RESTful веб-сервисов, однако данные возможности - тема уже совсем другого разговора.

UPD 23.02.2011: Очень интересный скринкаст, демонстрирующий нововые возможности Java EE 6 и их использование с помощью Eclipse и GlassFish.

Оставайтесь на связи!

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

10 комментариев:

Alex Kirilov комментирует...

С добавлением сервера проблем особо никогда и не
возникало.
Проблема в том, что публикуются на сервер только приложения, которые еклипс распознает как веб.
А что делать, если в еклипсе лежит мавеновский веб проект. Есть ли решения для хот деплоя в такой конфигурации?

Алимов комментирует...

Огромное спасибо!Статья супер!

Pavel Samolisov комментирует...

Лучше поздно, чем никогда

@Alex Kirilov я не использую плагины для Maven в Eclipse, а использую плагин для Eclipse в Maven. Создать Web/EAR/EJB проекты для Eclipse можно следующим образом:

mvn eclipse:eclipse -Dwtpversion=2.0

Artem Demyanskiy комментирует...

спасибо коллега!

Pavel Samolisov комментирует...

Всегда пожалуйста :)

Hobukob комментирует...

В случае согласия с лицензией, станет активной кнопка Finish, при нажатии на которую начнется установка коннектора...
После этого загружается до 32% зависает минут на 5 и вылетает по тайм-ауту. Есть предположение, почему так происходит? Eclipse Juno

Pavel Samolisov комментирует...

Может быть проблемы с интернет-соединением?

Hobukob комментирует...

И соединением все ок. Пробовал уже раз 15, всегда на 32%. Ставил Eclipse и 64, и 32, Java машину переставлял, JDK, нет, всегда 32% и все.
К слову сказать, Bundle работает. Только сервер не стартует из еклипса((.

Erik Ivanov комментирует...

Я выбрал GlassFish Server Open Source Edition 3 (JavaEE 6) у меня уже установлен и работает GlassFish Server Open Source Edition 3.1.2.2 (build 5) при указании директории C:/glassfish3/glassfish Плагин не находит сервера. Что делать?

Erik Ivanov комментирует...

Заменил коннектор на 3.1.2 и сервер был найден.

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

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