- 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:glassfish4glassfishbin : Сервер зупинений. Тепер запустимо його:
Розбираємо перший 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 — Дюка: Небагатьом відомо, що Дюк має день народження. Він народився 23 травня 1995 року, коли було опубліковано першу демо-версію технології Java. Додаток dukes-age, як випливає з назви, видає інформацію про вік Дюка. Відкриємо цей додаток у IntelliJ IDEA: File -> New -> Project From Existing Sources… Потім перейдемо в папку з додатком dukes-age, розташовану за замовчуванням за адресаою C:\glassfish4\docs\firstcup\example\ dukes-age , виберемо файл pom.xml і натиснемо кнопку OK: У нас відкриється програма з наступною структурою: Поглянемо на код класу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 (за аналогією з тим, як було показано в цій статті);
- Можливо, багатьма іншими питаннями )
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ