
- Java EE SDK;
- Java EE Application Server GlassFish;
- Настройка IntelliJ IDEA.
- Показать, как можно подготовить рабочее окружение для работы с Java EE приложениями.
- Показать, каким образом можно деплоить и запускать Java EE приложения из IntelliJ IDEA на сервере GlassFish.
- Скачаем и установим Java EE 7 SDK.
- Поднимем Java EE Application Server GlassFish.
- Научимся запускать и останавливать сервер через командную строку.
- Настроим IntelliJ IDEA для деплоя приложений на этот сервер.
- Развернем и запустим демонстрационное приложение, которое вместе с сервером приложений GlassFish входит в поставку Java EE 7 SDK.
- GlassFish 4.0;
- IntelliJ IDEA 2019.3.1 (Ultimate);
- Java EE SDK 7.
Установка Java EE SDK
Важное условие. Перед установкой Java EE SDK, необходимо удостовериться, что Java SE SDK предустановлена.Для начала нам необходимо скачать SDK. Для этого в поисковике можно набрать: “Java EE SDK 7”, либо напрямую перейти на страницу загрузки sdk с сайта Oracle.
В списке представленных SDK, необходимо выбрать ту, которая подходит для вашей платформы. В статье описывается установка дистрибутива: “java_ee_sdk-7-jdk7-windows-x64-ml.exe”
Запускаем установочный файл. Во время запуска может возникнуть следующая ошибка (если она не возникнет, значит, можно просто продолжать установку):
Это значит, что установщику не удалось найти путь к предустановленной Java Runtime Environment. Ошибку можно исправить, передав путь до JRE вручную средствами командной строки. Для этого необходимо запустить установочный файл через PowerShell и передать через параметр -j путь до предустановленной JRE.
Например, так:
Дальнейшая процедура установки вполне типична для большинства программ. Все, что нужно делать, — кликать на кнопки Next и Install.
Программа установит Java EE SDK, а также сервер GlassFish, который по завершению установки будет поднят и готов к работе.Чтобы убедиться в работоспособности сервера GlassFish, по завершению установки можно открыть администраторскую панель сервера, которая будет доступна по адресу: http://localhost:4848/
Скрин — ниже:
GlassFish запуск и остановка через командную строку
Итак, сервер поднят и работает, но старт сервера был инициирован программой установки. Ниже попробуем разобраться с тем, как стартовать и останавливать сервер самостоятельно. Для начала раскроем такую сущность, как домен. Домен — это набор одного или нескольких экземпляров (инстансов) GlassFish сервера, управляемых одним сервером администрирования. При установке сервера GlassFish создается домен по умолчанию — domain1. С ним связаны такие компоненты:- Порт сервера (по умолчанию 8080);
- Порт сервера администрирования (по умолчанию 4848);
- Имя пользователя и пароль администратора (по умолчанию — admin, и по умолчанию пароль не требуется).

asadmin start-domain domain_name
asadmin stop-domain domain_name
Попробуем остановить сервер (так как после установки он уже запущен), запустив PowerShell из поддиректории C:\glassfish4\glassfish\bin:


Разбираем первое Java EE приложение, dukes-age
Далее мы рассмотрим демонстрационное Java EE приложение: dukes-age. Данное приложение включается в поставку Java EE SDK совместно с приложением first-cup. Описание данных приложений представлено на сайте с официальной документацией Oracle в разделах 3 и 4 вводного курса по Java EE для начинающих Java EE разработчиков. В данной статье мы кратко рассмотрим приложение dukes-age и более подробно разберем процесс запуска данного приложения на сервере GlassFish из среды разработки IntelliJ IDEA. Приложение располагается внутри директории сервера glassfish. Если вы не меняли путь по умолчанию для сервера glassfish при установке Java EE SDK, вы сможете найти данное приложение в папке: C:\glassfish4\docs\firstcup\example\dukes-age. Наверное, каждый Java разработчик, начинающий и опытный, хотя бы раз видел талисман языка программирования Java — Дюка:


DukesAgeResource
:
package firstcup.dukesage.resource;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
/**
* REST Web Service
*
*/
@Path("dukesAge")
public class DukesAgeResource {
/** Creates a new instance of DukesAgeResource */
public DukesAgeResource() {
}
/**
* Retrieves representation of an instance of DukesAgeResource
* @return an instance of java.lang.String
*/
@GET
@Produces("text/plain")
public String getText() {
// Create a new Calendar for Duke's birthday
Calendar dukesBirthday = new GregorianCalendar(1995, Calendar.MAY, 23);
// Create a new Calendar for today
Calendar now = GregorianCalendar.getInstance();
// Subtract today's year from Duke's birth year, 1995
int dukesAge = now.get(Calendar.YEAR) - dukesBirthday.get(Calendar.YEAR);
dukesBirthday.add(Calendar.YEAR, dukesAge);
// If today's date is before May 23, subtract a year from Duke's age
if (now.before(dukesBirthday)) {
dukesAge--;
}
// Return a String representation of Duke's age
return "" + dukesAge;
}
}
Это JAX-RS RESTful web-сервис с одним методом — getText()
.
Если изучить код данного метода, станет ясно, что метод возвращает количество лет, прошедших со дня рождения Дюка. То есть, метод возвращает возраст Дюка.
Класс является ресурсом в контексте REST.
- Аннотация над классом
@Path("dukesAge")
определяет URI путь, обращения на который будет обрабатывать данный класс. - Аннотация над методом
@GET
говорит нам о том, что данный метод обрабатывает GET запросы. - Аннотация
@Produces("text/plain")
определяет media type ответа на запрос. Нетрудно догадаться, что методgetText()
будет формировать ответы с media type: text/plain.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
</web-app>
В данном файле, внутри тега servlet-mapping
, определен тег url-pattern
со значением /webapi/*
. Здесь определяется некоторая корневая точка, обращения на которую будут обрабатываться в дальнейшем сервисом.
Если сложить с аннотацией @Path("dukesAge")
, выходит, чтобы получить информацию о возрасте Дюка, необходимо обратиться на адрес /webapi/dukesAge.
Настройка IntelliJ IDEA для запуска Java EE приложения на сервере GlassFish
Получив весьма обобщенное представление о приложении dukes-age (подробнее читайте о нем на сайте Oracle), давайте настроим IntelliJ IDEA, чтобы мы могли запускать это приложение из нашей IDE. Настройка IntelliJ IDEA- Для этого переходим в меню 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:
После перезапуска, если все было сделано правильно, мы увидим возраст Дюка:
Заключение
В данной статье мы разобрали, как можно настроить свое локальное окружение для работы с Java EE приложениями на примере сервера GlassFish 4.0, среды разработки IntelliJ IDEA 2019.3.1 (Ultimate), а также Java EE SDK версии 7. Мы рассмотрели, как можно:- скачать и установить Java EE SDK, а также сервер GlassFish;
- остановить и запустить сервер GlassFish через PowerShell;
- настроить IntelliJ IDEA, чтобы можно было деплоить Java EE приложения из IDE на сервер GlassFish и сразу же запускать их.
Бонусное задание
- Повторить все описанные шаги самостоятельно.
- Изучить вводный курс по Java EE для начинающих Java EE разработчиков от Oracle.
- Пункт со звездочкой. Попробовать задеплоить самостоятельно второе демонстрационное приложение first-cup. Данное приложение более интерактивное, а также оно взаимодействует с приложением dukes-age. Для выполнения данного пункта необходимо будет самостоятельно разобраться с такими вопросами:
- Как включить базу данных внутри сервера glassFish;
- Как интегрировать два приложения друг с другом (внутри first-cup указать путь до эндпоинта dukes-age, который мы обсуждали в данной статье);
- Как создать новую конфигурацию в Intellij IDEA для деплоя first-cup (по аналогии с тем, как было показано в данной статье);
- Возможно, многими другими вопросами )
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ