Как развернуть приложение на glassfish
В данном руководстве показано, как создать простой клиент приложения и выполнить доступ к компоненту Enterprise JavaBean (EJB), развернутому на сервере 3-й версии GlassFish. В этом руководстве мы начнем с создания корпоративного приложения, содержащего простой сеансовый компонент, и проекта библиотеки классов Java, содержащей удаленный интерфейс для этого сеансового компонента. Затем мы создадим клиент приложения, выполняющий доступ к сеансовому компоненту через удаленный интерфейс в библиотеке классов. Файл JAR библиотеки классов, содержащий удаленный интерфейс, добавляется к пути класса корпоративного приложения и клиенту приложения.
Упражнения по темам руководства
Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.
Версия 7.2, 7.3, 7.4, 8.0, Java EE
GlassFish Server Open Source Edition 3.1.2.2
Предпосылки
Предполагается, что читатель обладает базовыми знаниями по следующим технологиям или опытом программирования с их использованием:
Программирование на Java
Создание библиотеки классов Java
В данном разделе мы создадим проект библиотеки классов Java, который будет содержать удаленный интерфейс для EJB. Этот удаленный интерфейс ведет себя как интерфейс API для EJB, используемый клиентами для связи с EJB.
Файл JAR библиотеки легко разослать всем клиентам, которым может потребоваться вызвать EJB. Клиентам, которым нужен доступ к EJB, достаточно добавить файл JAR библиотеки к пути классов проекта. В реализации EJB тот же файл JAR используется для реализации интерфейса.
После нажатия кнопки "Готово" среда IDE создаст проект библиотеки классов Java. В следующем разделе мы создадим корпоративное приложение Java EE и модуль EJB. Затем мы используем мастер для создания сеансного компонента и удаленного интерфейса к этому сеансовому компоненту в проекте библиотеки классов. Клиент приложения выполнит доступ к сеансовому компоненту сеанса через интерфейс в библиотеке классов.
Создание модуля EJB
В этом разделе мы создадим корпоративное приложение и модуль EJB. При создании компонента EJB его следует создать как часть корпоративного приложения, сжать в архив EAR и развернуть на сервере.
Создание приложения уровня предприятия
В этом разделе вы будете использовать мастер создания проектов для создания корпоративного приложения, содержащего модуль EJB. Данный мастер предоставляет возможность создать модуль EJB при создании приложения.
Выберите GlassFish Server в качестве сервера.
При нажатии кнопки "Готово" среда IDE создаст корпоративное приложение и модуль EJB. В окне 'Проекты' видно, что проект модуля EJB указан в узле Java EE Modules проекта приложения корпоративного уровня.
Можно заметить, что теперь в окне проектов перечислены три типа проектов: библиотека классов, корпоративное приложение и модуль EJB.
Создание компонента сеанса
В этом упражнении мы используем мастер для создания компонента сеанса в проекте модуля EJB. В этом мастере мы также создадим удаленный интерфейс для компонента сеанса в проекте библиотеки классов.
Щелкните правой кнопкой мыши проект модуля EJB и выберите New ("Создать") > Session Bean ("Сеансный компонент").
Введите MySession в поле EJB Name ("Имя EJB").
В поле Package ("Пакет") введите ejb.
Выберите Stateless ("Без поддержки состояния") в Session Type ("Тип сеанса").
Выберите параметр Remote ("Удаленный") в Create Interface ("Создать интерфейс").
При нажатии "Готово" среда IDE создает сеансовый компонент в пакете ejb модуля EJB и открывает класс в редакторе. Можно увидеть, что MySession реализует интерфейс MySessionRemote и что файл JAR EJBRemoteInterface был добавлен как библиотека модуля EJB.
Мастер также создает удаленный интерфейс под названием MySessionRemote в пакете ejb проекта EJBRemoteInterface. IDE автоматически добавляет библиотеку интерфейса API Java EE 6, необходимую интерфейсу EJB.
Добавление бизнес-метода
В этом упражнении мы создадим простой бизнес-метод в сеансовом компоненте, возвращающий строку.
Щелкните правой кнопкой мыши редактор MySession и выберите Insert Code ("Вставить код") (Alt-Insert; Ctrl-I на Mac), затем выберите Add Business Method ("Добавить бизнес-метод").
Внесите нижеприведенные изменения, чтобы метод getResult возвращал строку.
Класс должен выглядеть следующим образом:
Теперь у нас есть корпоративное приложение с простым компонентом EJB, предоставляемым через удаленный интерфейс. У нас также имеется независимая библиотека классов, содержащая интерфейс EJB, которую можно разослать другим разработчикам. Разработчики могут добавлять библиотеку к своим проектам, если им нужна связь с EJB, предоставляемым через удаленный интерфейс, но не нужны исходные коды для EJB. При изменении кода для EJB достаточно распространить JAR обновленной библиотеки классов, если изменения затронули любой из интерфейсов.
При использовании диалогового окна "Добавить бизнес-метод" среда IDE автоматически включает метод в удаленный интерфейс.
Развертывание корпоративного приложения
Теперь корпоративное приложение можно собрать и запустить. При запуске приложения среда IDE развернет архив EAR на сервере.
Щелкните правой кнопкой мыши корпоративное приложение EntAppEJB и выберите Deploy ("Развернуть").
После выбора "Развернуть" среда IDE собирает корпоративное приложение и разворачивает архив EAR на сервере. Если взглянуть в окно Files ("Файлы"), можно заметить, что файл JAR EJBRemoteInterface развернут вместе с приложением.
Если развернуть узел 'Приложения' сервера GlassFish в окне 'Службы', можно увидеть, что компонент EntAppEJB развернут.
Создание клиента приложения
В этом разделе мы создадим клиент корпоративного приложения. При создании клиента приложения проекту нужна библиотека классов Java EJBRemoteInterface в качестве библиотеки, чтобы установить ссылку на EJB.
При запуске корпоративного приложения среда IDE пакетирует клиент приложений и файл JAR библиотеки классов Java в архив EAR. Файлы JAR библиотеки должны быть упакованы в файл EAR вместе с клиентом приложения, если необходим доступ к ним из клиента приложения.
Создание приложения уровня предприятия
В этом упражнении мы используем мастер создания проектов, чтобы создать проект клиента приложения. Если развертывание выполняется на сервере GlassFish 3.1 или 4.x, клиент приложения можно создать и запустить как отдельный проект. Клиент приложения больше не надо будет развертывать и запускать как часть корпоративного приложения.
При развертывании на GlassFish 3.0.1, необходимо создать клиентское приложение в виде модуля в проекте корпоративного приложения и запустить корпоративное приложение. |
Обратите внимание, что добавлять проект к корпоративному приложению необязательно.
При нажатии "Готово" IDE создаст проект клиента приложения и откроет Main.java в редакторе.
Добавление библиотеки классов
Теперь следует добавить библиотеку классов, содержащую удаленный интерфейс, к пути классов проекта, чтобы позволить клиенту приложения ссылаться на EJB. Проект библиотеки классов теперь открыт, так что диалоговое окно "Вызвать компонент корпоративного уровня" теперь можно использовать для помощи в генерировании кода с целью вызова EJB.
Если проект библиотеки классов не открыт, вы можете добавить библиотеку классов для проекта в окне 'Проекты', щелкнув правой кнопкой мыши узел 'Библиотеки' узла и выполнив поиск файла JAR проекта EJBRemoteInterface.
Разверните узел Source Packages ("Пакеты исходного кода") проекта EntAppClient и откройте Main.java в редакторе.
Щелкните правой кнопкой мыши исходный код и выберите Insert Code ("Вставить код") (Alt-Insert; Ctrl-I на Mac), затем выберите Call Enterprise Bean ("Вызвать компонент корпоративного уровня"), чтобы открыть диалоговое окно вызова компонента корпоративного уровня.
В данном диалоговом окне автоматически выбирается тип интерфейса Remote ("Удаленный"). При нажатии кнопки OK среда IDE добавит следующую аннотацию к Main.java .
Среда IDE также автоматически добавит EJBRemoteInterface как библиотеку проекта.
Измените главный метод извлечения строки метода getResult посредством интерфейса MySessionRemote. Сохраните изменения.
public static void main(String[] args)
Запуск клиента приложения
Теперь клиент приложения можно запустить, собрав и развернув проект EntAppClient.
Щелкните правой кнопкой мыши проект EntAppClient в окне Projects ("Проекты") и выберите Run ("Запустить").
Кроме того, вы можете расширить исходный пакет и щелкнуть правой кнопкой мыши класс Main.java и выбрать 'Выполнить файл'.
Если необходимо создать дополнительные EJB, можно просто добавить новые удаленные интерфейсы EJB к проекту библиотеки классов EJBRemoteInterface.
Что дальше?
For more information about using IDE NetBeans to develop Java EE applications, see the following resources:
Дополнительные сведения о разработке компонентов корпоративного уровня EJB можно найти в Руководстве по Java EE 6.
To send comments and suggestions, get support, and keep informed on the latest developments on the IDE NetBeans Java EE development features, join the nbj2ee mailing list.
Для начала нам необходимо скачать SDK. Для этого в поисковике можно набрать: “Java EE SDK 7”, либо напрямую перейти на страницу загрузки sdk с сайта Oracle.
В списке представленных SDK, необходимо выбрать ту, которая подходит для вашей платформы. В статье описывается установка дистрибутива: “java_ee_sdk-7-jdk7-windows-x64-ml.exe”
Запускаем установочный файл. Во время запуска может возникнуть следующая ошибка (если она не возникнет, значит, можно просто продолжать установку):
Дальнейшая процедура установки вполне типична для большинства программ. Все, что нужно делать, — кликать на кнопки Next и Install.
- Аннотация над классом @Path("dukesAge") определяет URI путь, обращения на который будет обрабатывать данный класс.
- Аннотация над методом @GET говорит нам о том, что данный метод обрабатывает GET запросы.
- Аннотация @Produces("text/plain") определяет media type ответа на запрос. Нетрудно догадаться, что метод getText() будет формировать ответы с media type: text/plain.
Настройка IntelliJ IDEA для запуска Java EE приложения на сервере GlassFish
- Для этого переходим в меню Run -> Edit Configurations.
- У нас откроется панель Run/Debug Configurations:
- Нам необходимо добавить новую конфигурацию. Для этого нажмем на плюсик, либо воспользуемся хоткеем Alt+Insert. В открывшемся списке выберем GlassFish Server -> Local:
- В открывшемся окне приступим к настройке конфигурации:
- Следующим шагом укажем артефакты, которые необходимо будет деплоить на сервер. Это можно сделать через вкладку Deployment, нажав на плюс -> Artifact.
- Выбираем dukes-age:war и нажимаем OK:
- Далее сохраняем нашу конфигурацию, нажав на Apply, а затем OK.
Запуск приложения
Для этого можно воспользоваться хоткеем Alt+Shift+F10, либо через меню Run -> Run…
И выбираем созданную нами конфигурацию dukes-age:
После этого мы видим логи запуска в панели Services:
Затем, если все сделано согласно инструкции, откроется браузер и станет понятно, что ничего не работает:
Для этого вернемся в IntelliJ IDEA, затем в меню: Run -> Edit Configurations…
Выберем ранее сохраненную конфигурацию и обновим URL в соответствии со скрином ниже:
Сохраним конфигурацию и перезапустим наше приложение с помощью хоткея Ctrl+Shift+F10, либо с помощью специальной кнопки, на панели Services:
После перезапуска, если все было сделано правильно, мы увидим возраст Дюка:
В данном уроке хочу вам показать как создать web-приложение используя возможности Glassfish и EJB3.
Шаг 0
1. Скачиваем Glassfish.
2. Скачиваем MySQL Server скачать
После скачивания устанавливаем, ставим пароль root. И создаем базу, называем её devcolibri.
Шаг 1
Добавляем зависимости в pom.xml
И еще нам потребуется два maven plugin-а:
Шаг 2
Теперь давайте создадим Entity (сущность) для работы с базой данных.
Создаем класс User.java
Дальше нам нужно создать EntityManager, но для начало настроим Glassfish.
Шаг 3
Что именно мы будем настраивать в glassfish?
Мы будем настраивать JDBC Connection.
Если вы только установили Glassfish, то он у вас уже запущен, нам нужно его остановить. Для этого идем туда где он установлен, если вы ничего не меняли, то он должен лежать в корне диска C:/glassfish4, и после в папку bin там есть файл asadmin.bat запускайте его. Появится консоль, там вы должны написать следующую команду, чтобы остановить glassfish:
Как проверить запущен ли сервер?
Для этого откройте браузер и просто напишите в URL -> localhost:4848, если вы увидите вход в админку glassfish то сервер запущен.
После того как вы остановили сервер идем в папку C:\glassfish4\glassfish\domains\domain1\lib\ext и копируем туда MySQLJDBCDriver, его можно найти в
C:\Users\devcolibri\.m2\repository\mysql\mysql-connector-java\5.1.25\mysql-connector-java-5.1.25.jar
Это нужно Glassfish для того чтобы получать connection к базе данных, так как за все транзакции будет отвечать glassfish то ему нужен данный драйвер.
Дальше открываем asadmin.bat и запускаем сервер следующей командой:
После этого идем в браузер по URL -> localhost:4848 и логинимся admin, пароль admin.
Открываем в пункте меню вкладку JDBC -> JDBC Connection Pool.
Теперь добавляем JDBC Resources на основе созданного Pool:
Внимание!
Или вместо этого, что мы настраивали выше можно добавить в консоли asadmin.bat следующей командой эти данные.
Для JDBC Connection Pool эта (все в одну строку):
и для JDBC Resources:
На этом настройка законченна!
Шаг 4
В проекте заходим в папку src/resources/ и создаем там новую папку META-INF и добавляем туда файл persistence.xml, теперь мы настроим наш персистенс на контейнер Glassfish-а.
Шаг 5
Создаем Bean для этого создадим класс UserBean.java и проаннотируем его аннотацией @Stateless.
Аннотация @Stateless указывает, что это будет бин без сохранения состояния между вызовами методов.
Шаг 6
Создаем Servlet который будет работать с данным бином, который мы создали выше.
Назовем его MainServlet.java он будет выводить все пользователей:
И теперь создадим jsp страницу которая будет выводить полученный список пользователей на Servlet-е.
Создадим list.jsp тут src\main\webapp\list.jsp:
Шаг 7
Добавим сервлет, который будет добавлять новых пользователей, а также он будет редактировать пользователей.
Создадим сервелет AddAndEditUserServlet.java:
и JSP для этого сервлета:
Шаг 8
И последний сервлет это для удаления пользователя, и назовем его DeleteUser.java:
Шаг 9
Теперь собираем проект с помощью Maven:
После этого в папке проекта появится папка target и там будет собранный проект с расширением *.war
Шаг 10
Теперь деплоим (Deploy).
После удачного деплоя вы можете зайти на свое приложение:
В результате получится это:
P.S. Спасибо за внимание! Надеюсь я вам помог.
ПОХОЖИЕ ПУБЛИКАЦИИ
22 комментариев к статье "Web-приложение с использованием EJB3 + Glassfish и JPA2"
В idea довольно объемная инфраструктура для создания ear приложений, было бы очень интересно почитать про концепцию работы с такими проектами в этой ide, принятый порядок подключения модулей, сборки, работу с встроенными вайзардами, инкрементное обновление ear архива и т.д. Сама ide, с не привычки немного не очевидна :) родная их дока довольно скромна на примеры, а все сторонние статьи в основном больше про мавен чем про идею, а с мавеном проблем то как раз нет, по нему книг и статей написано немерено :) Да если можно, выложите пожалуйста собранный правильно с вашей точки зрения ear проект в idea на что-нибудь вроде гитхаба, было бы интересно посмотреть :)
Есть неточность в связке между Шагом 4 и 5. Не правильно указанно имя PersistenceContext.
GlassFish 3 поддерживает несколько методов мониторинга и управления. В этой статье я кратко расскажу о подходах, которые GlassFish предоставляет для администрирования, мониторинга и управления.
Консоль администратора GlassFish
Интерфейс командной строки администратора GlassFish
Графический интерфейс консоли администратора GlassFish предлагает преимущества графического интерфейса, такие как простота изучения и использования, но также и с недостатками графического интерфейса пользователя (может потребоваться больше времени, чтобы преодолеть «накладные расходы» использования подхода с графическим интерфейсом для вещей, которые легко сделать из командная строка и не работает так же хорошо в сценариях и безголовых сред). В некоторых случаях предпочтителен подход командной строки, и GlassFish поддерживает администрирование командной строки с помощью интерфейса командной строки администратора GlassFish .
Запуск asadmin start-domain используется для запуска домена в GlassFish. Команда asadmin help может использоваться, чтобы узнать больше о доступных командах. Очень маленький фрагмент из верхней части этой справочной информации показан ниже:
asadmin - utility for performing administrative tasks for Use the asadmin utility to perform administrative tasks for Oracle GlassFish Server. You can use this utility instead ofКак указывает начало asadmin утилита asadmin является альтернативой основанному на графическом интерфейсе интерфейсу консоли администрирования.
Существует множество доступных подкоманд, и некоторые из них перечислены здесь:
- список приложений для отображения списка развернутых приложений
- deploy и другие подкоманды развертывания
- version чтобы увидеть версию GlassFish (показано на снимке экрана ниже)
- list-команды (перечисляет доступные команды) [часть вывода, показанная на снимке экрана ниже]
GlassFish JMX / AMX
Два подхода, показанные в этом посте на данный момент для мониторинга и управления GlassFish (веб-интерфейс консоли администратора с интерфейсом командной строки и интерфейс командной строки администратора GlassFish) являются специфическими для GlassFish. GlassFish также поддерживает мониторинг и управление через Java Management Extensions ( JMX ), включая JSR 77 (« Управление J2EE »), о котором я писал ранее в своем посте Simple Remote JMX с GlassFish .
Поскольку GlassFish поддерживает интерфейс JMX , его можно легко контролировать и управлять с помощью доступных инструментов, таких как JConsole и JVisualVM . Помимо MBean-компонентов, которые предоставляет GlassFish, JVM имеет встроенные MBean-компоненты начиная с J2SE 5, которые также можно отслеживать в отношении размещенных экземпляров GlassFish.
GlassFish REST
Руководство по администрированию Oracle GlassFish Server 3.1 включает раздел « Использование интерфейсов REST для администрирования сервера GlassFish », в котором говорится, что «Сервер GlassFish предоставляет интерфейсы передачи состояния представлений ( REST ), чтобы вы могли получить доступ к данным мониторинга и конфигурации для сервера GlassFish». Далее предполагается, что клиентские приложения, такие как веб-браузеры, cURL и GNU Wget, можно использовать для взаимодействия со GlassFish через интерфейсы REST на основе Джерси . Конечно, как указывает эта страница, любой инструмент, написанный на любом языке, который обрабатывает интерфейсы на основе REST, может использоваться в сочетании с поддержкой REST GlassFish.
Ant Tasks
GlassFish предоставляет несколько задач Ant, которые позволяют использовать Ant для запуска и остановки сервера GlassFish, для развертывания приложений и для выполнения других задач управления. Поток StackOverflow покрывает этот подход. На следующих двух снимках экрана демонстрируется использование инструмента обновления консоли GlassFish Web Admin -> Доступные надстройки для выбора задач Ant для установки и содержимого ant-tasks.jar которое становится доступным после этого выбора.
Имея JAR ant-tasks.jar , он может быть помещен в ant-tasks.jar сборки Ant для сценария определенных действий GlassFish с помощью сборки Ant.
Вывод
Возможность управлять и контролировать сервер приложений является одной из его важнейших функций. В этой статье рассматриваются некоторые из наиболее распространенных методов, которые GlassFish поддерживает для управления, мониторинга и общего администрирования.
Glassfish - это бесплатный сервер приложений с открытым исходным кодом, разработанный Sun (в настоящее время спонсируемый Oracle). Он является одновременно контейнером EJB и контейнером WEB. Glassfish поддерживает последнюю версию стандарта Java EE.
Разница между Glassfish и Tomcat
Tomcat - это только WEB-контейнер и не поддерживает EJB, тогда как Glassfish является одновременно WEB-контейнером и EJB-контейнером.
Запуск и остановка Glassfish
После завершения установки откройте командную строку и введите asadmin start-domain, чтобы запустить контейнер domain1 по умолчанию (см. Рисунок 4).
Введите в консоли stop-domain, чтобы деактивировать контейнер domain1 по умолчанию (см. Рисунок 5).
Примечания: 1. Вы можете напрямую ввести asadmin и нажать Enter, чтобы войти в состояние непрерывного ввода команды;
2. Вы можете запустить / остановить указанный контейнер, добавив имя контейнера после start-domain / stop-domain.
Развертывание приложений и офлайн
Существует два метода развертывания Glassfish и автономного приложения: консоль администратора и командная строка. Процесс выглядит следующим образом:
Ошибка 1: PWC6199: ошибка сгенерированного сервлета:
Исходное значение 1.5 устарело и будет удалено во всех будущих выпусках.
Причина: поскольку Glassfish использует версию JDK по умолчанию 1.5, но мы обычно используем JDK 1.8 и выше, поэтому она не будет соответствовать.Мы должны определить версию JDK в файле конфигурации.
Решение: мы открываем файл default-web.xml в папке glassfish5 \ glassfish \ domains \ domain1 \ config в каталоге установки Glassfish, находим строку 345 и добавляем следующий код ниже:
После добавления сохраните и перезапустите сервер.
Ошибка 2: менеджер ресурсов выполняет работу за пределами глобальной транзакции.
com.mysql.jdbc.jdbc2.optional.MysqlXAException: XAER_OUTSIDE: Some work is done outside global transaction
Причина: Причина этой проблемы часто вызвана низкой версией драйвера mysql. Нам необходимо загрузить более новую версию драйвера mysql через Интернет. В Glassfish5 я использую mysql-connector-java-5.1.14. нормальная работа.
Читайте также: