GlassFish

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 22:47, 15 января 2019.
GlassFish
GlassFish logo.jpeg
Разработчики: Oracle Corporation (изначально Sun Microsystems)
Выпущена: 06.06.2005
Постоянный выпуск: 5.0.0 / 21.09.2017
Написана на: Java
Операционная система: Cross-platform
Локализация: English
Тип ПО: Application server
Лицензия: URL
Common Development and Distribution License & [GNU General Public License]
Веб-сайт javaee.github.io/glassfish

GlassFish — проект сервера приложений с открытым исходным кодом, созданный Sun Microsystems для платформы Java EE, а с 2010 года поддерживаемый Oracle Corporation. Поддерживаемая версия называется Oracle GlassFish Server. GlassFish — это бесплатное программное обеспечение, имеющее двойную лицензию по двум лицензиям на бесплатное программное обеспечение.

Описание

GlassFish является эталонной реализацией Java EE и, таким образом, поддерживает Enterprise JavaBeans, JPA, JavaServer Faces, JMS, RMI, страницы JavaServer, сервлеты и т. д. Это позволяет разработчикам создавать корпоративные приложения, которые переносимы и масштабируемы, а также интегрируются с унаследованными технологиями , дополнительные компоненты также могут быть установлены для дополнительных услуг. Построенный на модульном ядре, основанном на OSGi, GlassFish работает непосредственно на релизе Apache Felix. Он также работает с режимами Equinox OSGi или Knopflerfish OSGi. HK2 представляет систему модулей OSGi для предоставления компонентов, которые также могут рассматриваться как сервисы. Такие службы могут быть обнаружены и введены во время выполнения. GlassFish основан на исходном коде, выпущенном Sun и системой сохранения PersLink Oracle Corporation. Он использует производную от Apache Tomcat в качестве контейнера сервлета для обслуживания веб-контента с добавленным компонентом Grizzly, который использует Java New I / O (NIO) для масштабируемости и скорости.

История версий

Проект появился в июне 2005 года одновременно с открытием Sun Application Server 8. Частично GlassFish основывался на фрагментах кода Java System Application Server. Версия GlassFish v1.0 вышла в мае 2006 года. Версия 2.0 (добавление высокой доступности / кластеризации и расширенная поддержка веб-сервисов) была выпущена 17 сентября 2007 года. Этот выпуск также обеспечивает повышенную производительность (SPECjAppServer benchmark) над традиционными лидерами BEA WebLogic и IBM WebSphere. Версия 3.0 была выпущена 10 декабря 2009 года одновременно с Java EE 6. Она обеспечивает модульное разбиение на разделы и время запуска всего на несколько секунд. Версия 3.1 выпущена в феврале 2011 года и предлагает поддержку SSH, централизованное администрирование и полную кластеризацию с высокой доступностью сеансов. Он сочетает в себе исходные функции GlassFish v2.x с модульной и полной поддержкой Java EE 6, предлагаемые новой архитектурой 3.x. После приобретения Sun Oracle в начале 2010 года коммерческая версия GlassFish конкурирует в Oracle с помощью Weblogic. В 2013 году выходит Glassfish 4, поддерживая JEE 78. Через несколько месяцев коммерческая версия GlassFish перестала поддерживаться разработчиком. Версия GlassFish с открытым исходным кодом поддерживается как минимум до версии 5, это будет эталонная реализация Java EE 8.[Источник 1]

Функционал

На уровне стандартов GlassFish - это эталонный релиз стандарта Java EE 5, который охватывает:

  • EJB 3 (подход POJO, конфигурация аннотации, инъекция зависимостей);
  • Java Persistence API (JPA): стандарт, реализованный TopLink (по умолчанию в GlassFish), Hibernate или OpenJPA;
  • JAX-WS 2.x: новый стек для веб-сервисов;
  • JAXB 2.0: сопоставление XML / Java, используемое JAX-WS 2.0;
  • Java Server Faces (JSF) - MVC Framework
  • StAX - XML-потоковой парсер;
  • JSP 2.1 и Servlet 2.5: генерировать страницы и веб-контент динамически.
  • С GlassFish v3 это полная поддержка Java EE 6, которая предлагается:
  • EJB 3.1: singleton, API для контейнера, асинхронный, @Schedule.
  • JPA 2.0: коллекции, пессимистический замок, критерии API, EclipseLink теперь используется GlassFish
  • JSF 2.0: facelets / XHTML, интегрированные AJAX, составные компоненты, релиз GlassFish называется Mojarra
  • JAX-RS 1.1: веб-службы RESTful. Реализация осуществляется Jersey
  • Servlet 3.0: необязательный web.xml, асинхронный API, * CDI 1.0: Инъекция контекста и зависимостей (JSR 299, @Inject, Разговор и т. Д.). Реализация, используемая GlassFish, - JBoss Weld.
  • BeanValidation 1.0: проверка с использованием аннотации. Реализация, используемая GlassFish, - это Hibernate Validator.
  • Веб-профиль: широчайший набор функций платформы JavaEE для разработки веб-приложений.

GlassFish v3 предлагает поддержку веб-профиля и полного профиля. [Источник 2]

Реализация

Главной инновацией GlassFish v3 является его модульная архитектура, основанная на OSGi и расширяемая через слой абстракции HK2. Полный веб-интерфейс администрирования (переписан для версии 2 с JSF и AJAX). Интерфейс командной строки, скрипты и встроенные средства разработки. GlassFish предоставляет множество доступных свойств через JMX, например, через JConsole. Наконец, также предоставляются несколько задач ANT.

  1. Grizzly - это имя прослушивателя HTTP, написанного в nio (неблокирующий мультиплексор ввода / вывода Java 1.4) с той же самой или более высокой производительностью, чем собственный код (Apache HTTPd). Grizzly запускает Comet (долгосрочное HTTP-соединение), часто используемое с AJAX.
  2. Java Web Start: спецификация Java EE 5 определяет клиент приложения приложения зависимостей (ACC) (ссылка на EJB, контекст безопасности и т. Д.) В Java-клиенте (Swing, RCP и т.д). GlassFish позволяет упаковать этот клиент в приложение и перераспределить его через Java Web Start во время выполнения инъекции.
  3. Metro / WSIT: Metro - это название технологии веб-сервисов GlassFish и технологий взаимодействия Web-сервисов
  4. Tango - это расширение на основе JAX-WS 2.x и соответствует стандартам WS- * (WS -Addressing, WS-ReliableMessaging, WS-Security, WS-SecureConversation и т.д.).

GlassFish v1 интегрирован в GlassFish v2. [Источник 3]

Работа с приложением

Загрузка и установка

Рисунок 1 - Интерфейс GlassFish

Доступны две опции: GlassFish Open Source Edition и Oracle GlassFish Server. Берем установочный пакет GlassFish Server Open Source Edition, его размер — всего 53МБ! Загрузочный пакет представляет собой самораспаковывающийся архив. После скачивания нужно запустить большой .sh “скрипт” и, спустя несколько шагов графического мастера, GlassFish готов к использованию. Если вас не привлекает идея установщика, можно выбрать опцию распаковочной установки, которая весит примерно на 30МБ больше. Этот способ сопровождается опытом из трех знакомых шагов: Загрузите установочный пакет; Распакуйте архив; Все готово к работе! Интерфейс приложения представлен на рисунке 1.

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

Поддержка инструмента

GlassFish предлагает плагины для всех крупных IDE. Но основная проблема — рассредоточенность информации о них. Плагин для NetBeans сразу встроен в IDE, что ожидаемо с учетом его поставщика, но для установки остальных нужно искать соответствующий сайт. К счастью, GlassFish Tools доступны на Eclipse Marketplace для всех пользователей Eclipse — что делает их жизнь намного проще. Пользователям IntelliJ IDEA тоже повезло, нужный плагин уже есть в IDE. GlassFish предлагает достаточно хорошие плагины для Maven и Ant, которые обладают базовым функционалом — деплой, передеплой, запуск и остановка сервера. Из минусов: мало информации, где найти плагины, отличная поддержка IDE, если удалось эти плагины найти (особенно для NetBeans и Eclipse).

Конфигурация сервера

Все необходимое для управления и поддержки GlassFish сервера находится в утилите asadmin. C ее помощью можно управлять даже удаленными серверами, что не может не радовать! Одна вещь, которая особенно хорошо удалась в asadmin — это скриптинг. Да, возможно писать различные скрипты для управления развертываниями и серверами. Эти скрипты можно выполнить внутри asadmin как простой shell-скрипт.

Настоящих фанаты XML могут все настроить в domain.xls:

1 <network-listener port="8800" protocol="http-listener-1" transport="tcp" name="http-listener-1" thread-pool="http-thread-pool"></network-listener>

Некоторым изменениям конфигурации для вступления в силу требуется перезапуск DAS или инстансов сервера GlassFish. Прочие изменения применяются динамически без перезапуска DAS или инстансов. Вы можете узнать, необходим ли перезапуск домену или инстансу в asadmin.

1 asadmin> list-domains
2 domain1 running, restart required to apply configuration changes Command list-domains executed successfully.
3 asadmin> list-instances pmd-i1
4 pmd-i1 running; requires restart
5 Command list-instances executed successfully

При такой динамической конфигурации все изменения вступают в силу при запущенных DAS или инстансе. Нижеописанные конфигурационные изменения в интересах разработчика не требуют перезапуска:

  1. Добавление/удаление дополнительных компонентов;
  2. Добавление/удаление ресурсов и пулов JDBС, JMS и коннектора (Исключение: некоторые свойства пула соединений влияют на приложения);
  3. Изменение системного свойства, на которое не ссылается опция или порт JVM;
  4. Изменение уровней логирования;
  5. Включение/отключение ресурсов и приложений;
  6. Деплой, передеплой, андеплой приложений;

Из минусов: конфиг сложно достать, сложно читать xml файл, asadmin — рекомендуемый подход, но с ним сложно разобраться без доков и опыта. [Источник 4]

Сотрудничество

GlassFish является частью многих других проектов с открытым исходным кодом: Oracle вносит вклад в часть JPA в качестве источника TopLink Essentials с открытым исходным кодом в проекте GlassFish. Это последняя версия продукта. Спецификация JPA позволяет по желанию заменить реализации; С GlassFish v3 это эталонная реализация EclipseLink (разработанная Oracle), которая используетсяGlassFish использует эталонные реализации JBoss Weld и Hibernate Validator для интерфейсов CDI и BeanValidation JBoss использует JSF и JAXB от GlassFish и предлагает поддержку Metro / JAX-WS от GlassFish; BEA Weblogic 10 использует JAX-WS; Jetty приняла Grizzly и компилятор GlassFish JSP; TmaxSoft перепродает дистрибутив GlassFish под названием JEUS 6.0;

Источники

  1. GlassFish // Wikipedia. [2017-2018]. Дата обновления: 26.07.2018 URL: https://en.wikipedia.org/w/index.php?title=GlassFish&oldid=847552422 (Дата обращения: 12.11.2018)
  2. GlassFish The Open Source Java EE Reference Implementation // © Oracle. [2018-2019]. Дата обновления: 10.11.2018 URL: https://javaee.github.io/glassfish/documentation (Дата обращения: 14.01.2019)
  3. Золотая рыбка GlassFish: сервер приложений от Sun с открытым исходным кодом // tHR Team. [2017-2018]. Дата обновления: 26.07.2018 URL: http://hackings.ru/publ/1-1-0-269 (Дата обращения: 12.11.2018)
  4. Дебаты об Отличном Сервере Приложений Java c Tomcat, Jboss, GlassFish, Jetty и Liberty Profile // Habr. [2017-2017]. Дата обновления: 04.12.2017 URL: https://habr.com/company/otus/blog/343890/ (Дата обращения: 12.11.2018)