JavaRush /Java блог /Random UA /Налаштування локального оточення для Java EE розробки
zor07
31 рівень
Санкт-Петербург

Налаштування локального оточення для Java EE розробки

Стаття з групи Random UA
У цій статті ми налаштовуватимемо робоче оточення для запуску Java EE додатків. Нагадаю: у попередньому матеріалі ми розібрали основи Java EE . Налаштування локального оточення для Java EE розробки - 1Під оточенням маємо на увазі набір різних програмних компонентів:
  • Java EE SDK;
  • Java EE Application Server GlassFish;
  • Налаштування IntelliJ IDEA.
Основні цілі цього матеріалу:
  1. Показати, як можна підготувати робоче оточення для роботи з програмами Java EE.
  2. Показати, як можна деплоїти та запускати Java EE програми з IntelliJ IDEA на сервері GlassFish.
Ось що ми зробимо для цього:
  1. Скачаємо та встановимо Java EE 7 SDK.
  2. Піднімемо Java EE Application Server GlassFish.
  3. Навчимося запускати та зупиняти сервер через командний рядок.
  4. Налаштуємо IntelliJ IDEA для деплою програм на цей сервер.
  5. Розгорнемо та запустимо демонстраційну програму, яка разом із сервером програм GlassFish входить у постачання Java EE 7 SDK.
Ця стаття буде корисною Java-девелоперам-початківцям, які знайомляться з Enterprise-розробкою на Java. Вважайте, що це невелика підготовка для подальшої практики. Вам буде зрозуміло матеріал, якщо ви знайомі з базовими навичками роботи в командному рядку Windows (PowerShell). Версії програмних компонентів, що використовуються в статті:
  • GlassFish 4.0;
  • IntelliJ IDEA 2019.3.1 (Ultimate);
  • Java EE SDK 7

Встановлення Java EE SDK

Важлива умова. Перед встановленням Java EE SDK необхідно переконатися, що Java SE SDK встановлено.
  1. Для початку нам необхідно завантажити SDK. Для цього в пошуковику можна набрати: Java EE SDK 7, або безпосередньо перейти на сторінку завантаження sdk з сайту Oracle.

  2. У списку представлених SDK необхідно вибрати ту, яка підходить для вашої платформи. У статті описується встановлення дистрибутива: “java_ee_sdk-7-jdk7-windows-x64-ml.exe”

  3. Запускаємо інсталяційний файл. Під час запуску може виникнути наступна помилка (якщо вона не виникне, то можна просто продовжувати установку):

    Налаштування локального оточення для Java EE розробки - 2

    Це означає, що інсталятору не вдалося знайти шлях до попередньо встановленої Java Runtime Environment. Ви можете виправити помилку, передавши шлях до JRE вручну засобами командного рядка. Для цього необхідно запустити інсталяційний файл через PowerShell і передати через -j шлях до попередньо встановленої JRE.

    Наприклад, так:

    Налаштування локального оточення для Java EE розробки - 3
  4. Подальша процедура установки цілком типова більшість програм. Все, що потрібно робити, - натискати на кнопки Next і Install.

    Програма встановить Java EE SDK, а також сервер GlassFish, який по завершенню установки буде піднятий та готовий до роботи.

  5. Щоб переконатися у працездатності сервера GlassFish, по завершенню інсталяції можна відкрити адміністраторську панель сервера, яка буде доступна за адресаою: http://localhost:4848/

    Скрін – нижче:

    Налаштування локального оточення для Java EE розробки - 4

GlassFish запуск та зупинка через командний рядок

Отже, сервер піднято і працює, але старт сервера був ініційований програмою установки. Нижче спробуємо розібратися з тим, як стартувати та зупиняти сервер самостійно. Спочатку розкриємо таку сутність, як домен. Домен — це набір одного або кількох екземплярів (інстансів) GlassFish сервера, керованих одним сервером адміністрування. При установці сервера GlassFish створюється домен за промовчанням - domain1. З ним пов'язані такі компоненти:
  • Порт сервера (за замовчуванням 8080);
  • Порт сервера адміністрування (за замовчуванням 4848);
  • Ім'я користувача та пароль адміністратора (за замовчуванням – admin, і за замовчуванням пароль не потрібний).
У домені domain1 закріплені значення за промовчанням. Налаштування локального оточення для Java EE розробки - 5Для запуску та зупинки сервера дистрибутив GlassFish включає кілька скриптів, які за умовчанням розташовуються в наступній директорії: C:\glassfish4\glassfish\bin Для запуску та зупинки сервера GlassFish через командний рядок, можна використовувати скрипт asadmin і його команди:
asadmin start-domain domain_name
asadmin stop-domain domain_name
Спробуємо зупинити сервер (оскільки після встановлення він вже запущений), запустивши PowerShell з піддиректорії C:glassfish4glassfishbin : Налаштування локального оточення для Java EE розробки - 6Сервер зупинений. Тепер запустимо його: Налаштування локального оточення для Java EE розробки - 7

Розбираємо перший 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 — Дюка: Налаштування локального оточення для Java EE розробки - 8Небагатьом відомо, що Дюк має день народження. Він народився 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: Налаштування локального оточення для Java EE розробки - 9У нас відкриється програма з наступною структурою: Налаштування локального оточення для Java EE розробки - 10Поглянемо на код класу 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.
  1. Анотація над класом @Path("dukesAge")визначає URI шлях, звернення який обробляти цей класс.
  2. Анотація над методом @GETсвідчить, що цей метод обробляє GET запити.
  3. Анотація @Produces("text/plain")визначає media type відповіді запит. Неважко здогадатися, що метод getText()формуватиме відповіді з media type: text/plain.
Погляньмо також на файл конфігурації web.xml:
<?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
  1. Для цього переходимо в меню Run->Edit Configurations.
  2. У нас відкриється панель Run/Debug Configurations: Налаштування локального оточення для Java EE розробки - 11
  3. Нам потрібно додати нову конфігурацію. Для цього натиснемо на плюсик, або скористаємося хоткеєм Alt+Insert. У списку виберемо GlassFish Server -> Local: Налаштування локального оточення для Java EE розробки - 12
  4. У вікні приступимо до налаштування конфігурації: Налаштування локального оточення для Java EE розробки - 13
  5. Наступним кроком зазначимо артефакти, які потрібно буде деплоїти на сервер. Це можна зробити через вкладку Deployment, натиснувши на плюс -> Artifact... Налаштування локального оточення для Java EE розробки - 14
  6. Вибираємо dukes-age:war та натискаємо OK: Налаштування локального оточення для Java EE розробки - 15
  7. Далі зберігаємо нашу конфігурацію, натиснувши Apply, а потім OK.
Конфігурацію створено!

Запуск програми

Тепер давайте спробуємо запустити програму.
  1. Для цього можна скористатися хоткеєм Alt+Shift+F10 або через меню Run -> Run…

    І вибираємо створену нами конфігурацію dukes-age:

    Налаштування локального оточення для Java EE розробки - 16

  2. Після цього ми бачимо логі запуску на панелі Services:

    Налаштування локального оточення для Java EE розробки - 17
  3. Потім, якщо все зроблено згідно з інструкцією, відкриється браузер і стане зрозуміло, що нічого не працює:

    Налаштування локального оточення для Java EE розробки - 18
Такий світ IT. Навіть якщо все зроблено правильно, щось може працювати. Але не варто переживати: можна було б одразу описати, як зробити правильно, але тоді деякі нюанси були б менш очевидними. Наприклад, як формується url, на який нас спрямовує IDEA під час запуску програми? Звернімо на нього увагу. Нас перенаправабо на http://localhost:8080/dukes-age-7.0.1/ . Щоб зрозуміти, звідки це взялося (/dukes-age-7.0.1/), перейдемо в адміністраторську панель сервера GlassFish. У лівому меню потрібно клацнути на пункт Applications. Далі ви побачите задеплоєні програми, у тому числі dukes-age. При виборі програми dukes-age можна побачити деякі його характеристики, в тому числі і пункт Context-Root: Налаштування локального оточення для Java EE розробки - 19dukes-age-7.0.1 — це ім'я та версія програми. Коренева точка. Усі запити, які оброблятиме dukes-age, повинні починатися з префіксу /dukes-age-7.0.1/. Отже, ми маємо кореневу точку: /dukes-age-7.0.1. Також раніше ми обговорювали, що наш додаток буде обробляти звернення на /webapi/dukesAge. Сумісимо ці дві речі та оновимо нашу конфігурацію.
  1. Для цього повернемося до IntelliJ IDEA, потім у меню: Run -> Edit Configurations…

  2. Виберемо раніше збережену конфігурацію та оновимо URL відповідно до скрина нижче:

    Налаштування локального оточення для Java EE розробки - 20
  3. Збережемо конфігурацію та перезапустимо нашу програму за допомогою хоткею Ctrl+Shift+F10, або за допомогою спеціальної кнопки, на панелі Services:

    Налаштування локального оточення для Java EE розробки - 21
  4. Після перезапуску, якщо все було зроблено правильно, ми побачимо вік Дюка:

    Налаштування локального оточення для Java EE розробки - 22
Чудово. Нарешті ми з'ясували, що Дюку 24 роки. Якщо ви не повторите всі описані кроки протягом найближчої пари місяців, починаючи з квітня 2020 року, то Дюк, ймовірно, трохи постаріє.

Висновок

У цій статті ми розібрали, як можна настроїти своє локальне оточення для роботи з 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 і відразу ж запускати їх.

Бонусне завдання

  1. Повторити всі описані кроки самостійно.
  2. Вивчити вступний курс Java EE для початківців Java EE розробників від Oracle .
  3. Пункт із зірочкою. Спробувати самостійно задеплоїти другий демонстраційний додаток first-cup. Ця програма більш інтерактивна, а також вона взаємодіє з програмою dukes-age. Для виконання цього пункту необхідно буде самостійно розібратися з такими питаннями:
    1. Як увімкнути базу даних всередині сервера glassFish;
    2. Як інтегрувати дві програми один з одним (всередині first-cup вказати шлях до ендпоінта dukes-age, який ми обговорювали в цій статті);
    3. Як створити нову конфігурацію в Intellij IDEA для деплою first-cup (за аналогією з тим, як було показано в цій статті);
    4. Можливо, багатьма іншими питаннями )
PS Поріг входження високий, але хіба це вас мотивує?
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ