In questo articolo configureremo un ambiente di lavoro per l'esecuzione delle applicazioni Java EE. Lascia che te lo ricordi: nel materiale precedente abbiamo trattato le basi di Java EE . Configurazione di un ambiente locale per lo sviluppo Java EE - 1Per ambiente si intende un insieme di varie componenti software:
  • SDK Java EE;
  • Server applicativo Java EE GlassFish;
  • Configurazione di IntelliJ IDEA.
Gli obiettivi principali di questo materiale:
  1. Mostra come preparare un ambiente di lavoro per lavorare con le applicazioni Java EE.
  2. Mostra come distribuire ed eseguire applicazioni Java EE da IntelliJ IDEA sul server GlassFish.
Ecco cosa faremo per questo:
  1. Scarica e installa Java EE 7 SDK.
  2. Creiamo Java EE Application Server GlassFish.
  3. Impariamo come avviare e arrestare il server tramite la riga di comando.
  4. Configuriamo IntelliJ IDEA per distribuire le applicazioni su questo server.
  5. Distribuiamo ed eseguiamo l'applicazione demo che, insieme al server delle applicazioni GlassFish, è inclusa nell'SDK Java EE 7.
Questo articolo sarà utile per gli sviluppatori Java alle prime armi che stanno familiarizzando con lo sviluppo aziendale in Java. Consideratelo una piccola preparazione del terreno per ulteriori pratiche. Comprenderai il materiale se hai familiarità con le competenze di base della riga di comando di Windows (PowerShell). Versioni dei componenti software utilizzati in questo articolo:
  • Pesce di vetro 4.0;
  • IntelliJ IDEA 2019.3.1 (Ultimate);
  • SDK JavaEE 7.

Installazione dell'SDK Java EE

Condizione importante. Prima di installare Java EE SDK, è necessario assicurarsi che Java SE SDK sia preinstallato.
  1. Per prima cosa dobbiamo scaricare l'SDK. Per fare ciò, puoi digitare in un motore di ricerca: "Java EE SDK 7" o andare direttamente alla pagina di download dell'SDK dal sito Web di Oracle.

  2. Dall'elenco degli SDK forniti, devi selezionare quello adatto alla tua piattaforma. L'articolo descrive l'installazione della distribuzione: “java_ee_sdk-7-jdk7-windows-x64-ml.exe”

  3. Esegui il file di installazione. Durante l'avvio potrebbe verificarsi il seguente errore (se non si verifica è possibile continuare semplicemente con l'installazione):

    Configurazione di un ambiente locale per lo sviluppo Java EE - 2

    Ciò significa che il programma di installazione non è riuscito a trovare il percorso del Java Runtime Environment preinstallato. L'errore può essere corretto passando manualmente il percorso a JRE utilizzando la riga di comando. Per fare ciò è necessario eseguire il file di installazione tramite PowerShell e passare il percorso al JRE preinstallato tramite il parametro -j.

    Ad esempio, in questo modo:

    Configurazione di un ambiente locale per lo sviluppo Java EE - 3
  4. L'ulteriore procedura di installazione è abbastanza tipica per la maggior parte dei programmi. Tutto quello che devi fare è fare clic sui pulsanti Avanti e Installa.

    Il programma installerà Java EE SDK, nonché il server GlassFish, che, al termine dell'installazione, sarà attivo e pronto per l'uso.

  5. Per assicurarti che il server GlassFish funzioni, al termine dell'installazione puoi aprire il pannello di amministrazione del server, che sarà disponibile all'indirizzo: http://localhost:4848/

    Schermata seguente:

    Configurazione di un ambiente locale per lo sviluppo Java EE - 4

Avvio e arresto di GlassFish tramite riga di comando

Quindi, il server è attivo e funzionante, ma l'avvio del server è stato avviato dal programma di installazione. Di seguito proveremo a capire da soli come avviare e arrestare il server. Innanzitutto, riveliamo un'entità come un dominio. Un dominio è un insieme di una o più istanze del server GlassFish gestite da un server di amministrazione. Quando si installa il server GlassFish, viene creato un dominio predefinito: dominio1. Ad esso sono associati i seguenti componenti:
  • Porta del server (predefinita 8080);
  • Porta del server di amministrazione (predefinita 4848);
  • Nome utente e password dell'amministratore (l'impostazione predefinita è admin e non è richiesta alcuna password per impostazione predefinita).
Al dominio1 sono assegnati valori predefiniti. Configurazione di un ambiente locale per lo sviluppo Java EE - 5Per avviare e arrestare il server, la distribuzione GlassFish include diversi script, che per impostazione predefinita si trovano nella seguente directory: C:\glassfish4\glassfish\bin Per avviare e arrestare il server GlassFish tramite riga di comando, è possibile utilizzare lo script asadmin e i suoi comandi:
asadmin start-domain domain_name
asadmin stop-domain domain_name
Proviamo ad arrestare il server (poiché è già in esecuzione dopo l'installazione) eseguendo PowerShell dalla sottodirectory C:\glassfish4\glassfish\bin : Configurazione di un ambiente locale per lo sviluppo Java EE - 6il server viene arrestato. Ora eseguiamolo: Configurazione di un ambiente locale per lo sviluppo Java EE - 7

Analizziamo la prima applicazione Java EE, Dukes-Age

Successivamente esamineremo un'applicazione Java EE demo: dukes-age. Questa applicazione è inclusa nell'SDK Java EE insieme all'applicazione first-cup. Le descrizioni di queste applicazioni sono presentate sul sito web ufficiale della documentazione Oracle nelle sezioni 3 e 4 del corso introduttivo su Java EE per sviluppatori Java EE principianti . In questo articolo esamineremo brevemente l'applicazione Dukes-Age ed esamineremo più in dettaglio il processo di avvio di questa applicazione sul server GlassFish dall'ambiente di sviluppo IntelliJ IDEA. L'applicazione si trova nella directory del server glassfish. Se non hai modificato il percorso predefinito per il server glassfish durante l'installazione di Java EE SDK, puoi trovare questa applicazione nella cartella: C:\glassfish4\docs\firstcup\example\dukes-age . Probabilmente ogni sviluppatore Java, principiante ed esperto, ha visto almeno una volta la mascotte del linguaggio di programmazione Java: Duke: Configurazione di un ambiente locale per lo sviluppo Java EE - 8poche persone sanno che Duke festeggia il compleanno. È nato il 23 maggio 1995, quando è stata pubblicata la prima versione demo della tecnologia Java. L'app Dukes-Age, come suggerisce il nome, fornisce informazioni sull'età di Duke. Apriamo questa applicazione in IntelliJ IDEA: File -> Nuovo -> Progetto da fonti esistenti... Quindi andiamo alla cartella con l'applicazione dukes-age, che si trova per impostazione predefinita in C:\glassfish4\docs\firstcup\example\dukes- age , selezionare il file pom.xml e cliccare su OK: Configurazione di un ambiente locale per lo sviluppo Java EE - 9Si aprirà un'applicazione con la seguente struttura: Configurazione di un ambiente locale per lo sviluppo Java EE - 10Diamo un'occhiata al codice della classe 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;
    }
}
Questo è un servizio Web RESTful JAX-RS con un metodo: getText(). Se esamini il codice di questo metodo, diventa chiaro che il metodo restituisce il numero di anni trascorsi dalla nascita di Duke. Cioè, il metodo restituisce l'età di Duke. Una classe è una risorsa in un contesto REST.
  1. L'annotazione sopra la classe @Path("dukesAge")definisce il percorso URI verso il quale le chiamate verranno elaborate da questa classe.
  2. L'annotazione sopra il metodo @GETci dice che questo metodo elabora le richieste GET.
  3. L'annotazione @Produces("text/plain")specifica il tipo di supporto della risposta alla richiesta. Non è difficile intuire che il metodo getText()genererà risposte con tipo di media: text/plain.
Diamo anche un'occhiata al file di configurazione 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>
In questo file, all'interno del tag servlet-mapping, è definito un tag url-patterncon il valore /webapi/*. Qui viene definito un determinato punto radice, le cui chiamate verranno ulteriormente elaborate dal servizio. Se abbinato all’annotazione @Path("dukesAge"), risulta che per avere informazioni sull’età di Duke è necessario contattare l’indirizzo /webapi/dukesAge.

Configurazione di IntelliJ IDEA per eseguire un'applicazione Java EE su un server GlassFish

Ora che abbiamo un'idea molto generale dell'applicazione Dukes-Age (maggiori informazioni sul sito Oracle ), configuriamo IntelliJ IDEA in modo da poter eseguire questa applicazione dal nostro IDE. Configurazione di IntelliJ IDEA
  1. Per fare ciò, vai al menu Esegui -> Modifica configurazioni.
  2. Si aprirà il pannello Esegui/Debug configurazioni: Configurazione di un ambiente locale per lo sviluppo Java EE - 11
  3. Dobbiamo aggiungere una nuova configurazione. Per fare ciò, fare clic sul segno più o utilizzare il tasto di scelta rapida Alt+Inserisci. Nell'elenco che si apre, seleziona GlassFish Server -> Locale: Configurazione di un ambiente locale per lo sviluppo Java EE - 12
  4. Nella finestra che si apre, iniziamo a impostare la configurazione: Configurazione di un ambiente locale per lo sviluppo Java EE - 13
  5. Il passaggio successivo consiste nell'indicare gli artefatti che dovranno essere distribuiti sul server. Questo può essere fatto attraverso la scheda Distribuzione facendo clic sul segno più -> Artefatto... Configurazione di un ambiente locale per lo sviluppo Java EE - 14
  6. Selezionare Dukes-Age:War e fare clic su OK: Configurazione di un ambiente locale per lo sviluppo Java EE - 15
  7. Successivamente, salva la nostra configurazione facendo clic su Applica e poi su OK.
La configurazione è stata creata!

Avvio dell'applicazione

Ora proviamo a eseguire l'applicazione.
  1. Per fare ciò, puoi usare il tasto di scelta rapida Alt+Shift+F10, oppure tramite il menu Esegui -> Esegui...

    E seleziona la configurazione Dukes-Age che abbiamo creato:

    Configurazione di un ambiente locale per lo sviluppo Java EE - 16

  2. Successivamente vediamo i log di avvio nel pannello Servizi:

    Configurazione di un ambiente locale per lo sviluppo Java EE - 17
  3. Quindi, se tutto viene eseguito secondo le istruzioni, il browser si aprirà e risulterà chiaro che non funziona nulla:

    Configurazione di un ambiente locale per lo sviluppo Java EE - 18
Questo è il mondo IT. Anche se tutto è fatto correttamente, qualcosa potrebbe non funzionare. Ma non preoccuparti: potresti descrivere subito come farlo nel modo giusto, ma poi alcune sfumature sarebbero meno evidenti. Ad esempio, come viene generato l'URL a cui IDEA ci indirizza all'avvio dell'applicazione? Prestiamo attenzione ad esso. Siamo stati reindirizzati a http://localhost:8080/dukes-age-7.0.1/ . Per capire da dove provenga (/dukes-age-7.0.1/), andiamo al pannello di amministrazione del server GlassFish. Nel menu a sinistra, fare clic su Applicazioni. Successivamente vedrai le applicazioni distribuite, inclusa Dukes-Age. Quando selezioni l'applicazione dukes-age, puoi vedere alcune delle sue caratteristiche, inclusa la voce Context-Root: Configurazione di un ambiente locale per lo sviluppo Java EE - 19dukes-age-7.0.1 è il nome e la versione dell'applicazione. Punto radice. Tutte le richieste che dukes-age elaborerà devono iniziare con il prefisso /dukes-age-7.0.1/. Quindi abbiamo un punto radice: /dukes-age-7.0.1. Inoltre, in precedenza abbiamo discusso del fatto che la nostra applicazione gestirà le richieste a /webapi/dukesAge. Combiniamo queste due cose e aggiorniamo la nostra configurazione.
  1. Per fare ciò, torniamo a IntelliJ IDEA, quindi al menu: Esegui -> Modifica configurazioni...

  2. Selezioniamo la configurazione salvata in precedenza e aggiorniamo l'URL secondo lo screenshot qui sotto:

    Configurazione di un ambiente locale per lo sviluppo Java EE - 20
  3. Salviamo la configurazione e riavviamo la nostra applicazione utilizzando la scorciatoia Ctrl+Shift+F10 o utilizzando un pulsante speciale nel pannello Servizi:

    Configurazione di un ambiente locale per lo sviluppo Java EE - 21
  4. Dopo il riavvio, se tutto è stato fatto correttamente, vedremo l'età di Duke:

    Configurazione di un ambiente locale per lo sviluppo Java EE - 22
Grande. Alla fine abbiamo scoperto che Duke ha 24 anni. Se non ripeterai tutti i passaggi sopra descritti entro i prossimi due mesi, a partire da aprile 2020, probabilmente Duke invecchierà un po’.

Conclusione

In questo articolo, abbiamo esaminato come configurare il tuo ambiente locale per funzionare con le applicazioni Java EE utilizzando l'esempio del server GlassFish 4.0, dell'ambiente di sviluppo IntelliJ IDEA 2019.3.1 (Ultimate) e Java EE SDK versione 7. Abbiamo esaminato come puoi:
  • scaricare e installare Java EE SDK, nonché il server GlassFish;
  • fermare e avviare il server GlassFish tramite PowerShell;
  • configurare IntelliJ IDEA in modo da poter distribuire applicazioni Java EE dall'IDE al server GlassFish e avviarle immediatamente.

Compito bonus

  1. Ripeti tu stesso tutti i passaggi descritti.
  2. Partecipa a un corso introduttivo su Java EE per sviluppatori Java EE principianti di Oracle .
  3. Elemento con un asterisco. Prova a distribuire tu stesso la seconda applicazione demo della prima tazza. Questa applicazione è più interattiva e interagisce anche con l'applicazione Dukes-Age. Per completare questo passaggio, dovrai comprendere in modo indipendente le seguenti domande:
    1. Come abilitare il database all'interno del server glassFish;
    2. Come integrare due applicazioni tra loro (all'interno della first-cup indicare il percorso verso l'endpoint Dukes-Age, di cui abbiamo parlato in questo articolo);
    3. Come creare una nuova configurazione in Intellij IDEA per la distribuzione first-cup (simile a quanto mostrato in questo articolo);
    4. Forse molte altre domande)
PS La barriera all’ingresso è alta, ma non è questo ciò che ti motiva?