Perché Eclipse non usa la versione di Tomcat che ho scaricato?

di il
7 risposte

Perché Eclipse non usa la versione di Tomcat che ho scaricato?

Ciao a tutti,
Ieri ho provato ad installare Eclipse 2022-03 (4.23.0) perché ho visto che c'è qualche utente del forum che lo usa con soddisfazione ma soprattutto per confrontarlo con il mio a pagamento.
Funziona tutto alla perfezione ma ho notato delle stranezze:
1) Quando avvio l'applicazione leggo in console:
2022-05-11 00:45:52.371  INFO 15792 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.60]
ma io ho impostato la versione 10.0.20. Inoltre, non capisco dove Eclipse possa aver preso la versione 9.0.60 dato che non l'ho neppure scaricata.
hhh.png
hhh.png

Io ho scaricato la versione Core/64-bit Windows zip (pgp, sha512) a questo indirizzo (io uso Windows 10 come OS):
https://tomcat.apache.org/download-10.cg
e poi ho posizionato la cartella in una partizione diversa da dove è installato Eclipse. Ho fatto la stessa cosa con la JRE ma quella viene presa senza problemi.
Ho anche provato a fare questa procedura ma non ho risolto:
https://www.eclipse.org/forums/index.php/t/240103
2) Quando eseguo un aggiornamento del progetto e poi ripremo su 'run' con l'App già attiva Eclipse mi informa che l'App è già attiva e mi toglie il pulsante rosso per terminare l'App avviata. Risolvo chiudendo e riaprendo Eclipse. Quando mi ricordo di chiudere l'App prima di riavviarla tutto funziona perfettamente. Non esiste la possibilità di fermare tutto automaticamente ogni volta che decido di riavviare l'App nel browser?
3) Quando avvio l'App devo aprire io il browser, l'IDE non lo fa al posto mio, è possibile aggiungere questa funzionalità ovvero fare in modo che dopo che premo su run l'App mi apra il browser preferito all'indirizzo che desidero?
4) Ho scaricato un tema scuro perché quello di default era bianco e mi accecava ma non è che sia proprio il massimo. Voi quale tema usate? Il mio si chiama "Darkest Dark Theme with DevStyle 2021.5.26".
A presto

7 Risposte

  • Re: Perché Eclipse non usa la versione di Tomcat che ho scaricato?

    iBaffiPro ha scritto:


    1) Quando avvio l'applicazione leggo in console:
    2022-05-11 00:45:52.371  INFO 15792 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.60]
    ma io ho impostato la versione 10.0.20. Inoltre, non capisco dove Eclipse possa aver preso la versione 9.0.60 dato che non l'ho neppure scaricata.
    Ci sono alcune cose da chiarire. Per poter sviluppare webapp Java Enterprise in Eclipse serve la versione "Eclipse IDE for Enterprise Java and Web Developers", non quella "Eclipse IDE for Java Developers" che non ha i tools per JavaEE.
    Su questo credo che sei a posto, perché hai mostrato la configurazione dei server (questa c'è solo nella prima versione indicata prima).

    Questo però conta solo se sviluppi webapp JavaEE "pure", quelle che si impacchettano in un file .war finale. Se sviluppi ad esempio con Spring Boot e la applicazione parte stand-alone (dal main() ) con il suo Tomcat "embedded" (incorporato), non fa invece differenza la versione di Eclipse delle due indicate.

    In Eclipse comunque la sezione di configurazione "globale" Server -> Runtime Environments (quella che hai mostrato nello screenshot) descrive solo la configurazione per così dire "teorica" di un server, che da sola non fa nulla di particolare.
    Ma la ISTANZA vera e propria del server va poi creata e gestita nella vista Servers (se non ce l'hai tra le barre di icone: Window -> Show View -> Servers). Lì ci sono i vari server che possono essere in stato Stopped, Started, ecc....

    Eclipse di suo NON fornisce alcun server. Perlomeno sono sicuro di questo per la pacchettizzazione .zip che io sono abituato a scaricare e spacchettare "a mano". Forse è diverso per la pacchettizzazione .exe, quella come "installer" da avviare ma non saprei dire ora, perché non l'ho mai più provata! (preferisco di gran lunga lo zip )

    E infine c'è una questione che dovresti comprendere meglio: stai parlando di Tomcat 9.xx e Tomcat 10.xx. Il Tomcat 10, a differenza delle precedenti release, si basa su Jakarta EE che è diverso dal Java EE, perché nel Jakarta EE tutti i package della API Enterprise sono stati rinominati da javax.*** a jakarta.***. Questa è una grossa "rottura" con il passato del Java Enterprise e cambia TUTTO. Significa che lo sviluppo è proprio diverso e va fatto specificatamente per poter usare Jakarta EE (e un server come Tomcat 10 o più). Una webapp che gira su un Tomcat 9 NON gira su Tomcat 10.

    Nota che Spring Boot 2.x si basa ancora su Java EE.

    Quindi dovresti chiarire un attimo cosa stai facendo esattamente.
  • Re: Perché Eclipse non usa la versione di Tomcat che ho scaricato?

    Grazie per le info, non sapevo che tra Tomcat 9 e 10 ci fosse tutta questa differenza. Non credo di dover usare "Window -> Show View -> Servers" perché sulla sinistra l'IDE mi mostra già 2 cartelle, quella del progetto e quella del server. La mia applicazione funziona solo su Tomcat 9, non 10, ma non è per questo motivo che Eclipse avvia Apache Tomcat/9.0.60 infatti aggiornando il server e cancellando Tomcat 10 il problema persiste:

    1.png
    1.png


    2.png
    2.png


    3.png
    3.png

    Tu riesci a cambiare server agevolmente su Eclipse o hai i miei stessi problemi?
    A me sembra una specie di bug di Eclipse ma posso sbagliarmi ovviamente...
  • Re: Perché Eclipse non usa la versione di Tomcat che ho scaricato?

    iBaffiPro ha scritto:


    Non credo di dover usare "Window -> Show View -> Servers"
    La vista Servers TI SERVE, perché è lì che vedi quali server sono avviati/stoppati, è lì che vedi quali webapp sono deployate sui server (basta "espandere" la voce del server) ed lì che puoi fare clean, undeploy, ecc...

    iBaffiPro ha scritto:


    La mia applicazione funziona solo su Tomcat 9, non 10, ma non è per questo motivo che Eclipse avvia Apache Tomcat/9.0.60 infatti aggiornando il server e cancellando Tomcat 10 il problema persiste
    Se hai un progetto deployabile su uno dei server (es. Tomcat) disponibili in Servers, basta fare sul progetto: Run As --> Run on Server e la prima volta ti chiede su quale server (tra gli n eventuali) fare il deploy.

    iBaffiPro ha scritto:


    Tu riesci a cambiare server agevolmente su Eclipse o hai i miei stessi problemi?
    Io con Eclipse NON ho alcun problema e faccio agevolmente tutto.
  • Re: Perché Eclipse non usa la versione di Tomcat che ho scaricato?

    Stiamo parlando di code diverse, hai ragione, "Window -> Show View -> Servers" mi serve ed è un'altra cosa:
    a.png
    a.png

    Forse tu usi versioni di Tomcat diverse da quella embedded, per questo non registri il problema.
    Comunque ho capito il problema e non è legato ad un bug di Eclipse ma un bug della mia applicazione e per la precisazione del mio pom.xml.
    Se nel mio pom.xml aggiungo:
    <tomcat.version>9.0.62</tomcat.version>
    sotto:
    <java.version>11</java.version>
    tutto funziona alla perfezione ovvero Eclipse carica il tomcat che desidero:
    2022-05-11 14:43:41.151  INFO 12816 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.62]
    Non posso scrivere:
    <tomcat.version>9</tomcat.version>
    Se lo faccio Eclipse mi segnala un errore e non compila nulla.
    E' davvero brutta questa cosa da inserire nel pom perché se su server reale ci fosse 9.0.60 la webapp non si avvierebbe. Tu cosa consigli di fare? A me di usare 9.0.62 invece di 9.0.60 non frega nulla. Ho inserito la 9.0.62 solo per vedere se ero capace di cambiare la versione di Tomcat di default dell'IDE.
    Comunque, a mio avviso, oltre a creare l'App bisogna anche creare la configurazione del server, con Java non si può più fare diversamente.
  • Re: Perché Eclipse non usa la versione di Tomcat che ho scaricato?

    iBaffiPro ha scritto:


    Forse tu usi versioni di Tomcat diverse da quella embedded, per questo non registri il problema.
    Se la tua applicazione parte dal main() (stand-alone) con il Tomcat "embedded", allora NON C'ENTRA niente un server configurato in Eclipse!!! Sono due cose ben differenti.

    iBaffiPro ha scritto:


    Se nel mio pom.xml aggiungo:
    <tomcat.version>9.0.62</tomcat.version>
    Se fai così stai ridefinendo (ed è corretto fatto così lì) la versione del Tomcat rispetto a quella managed ("gestita") da Spring nel spring-boot-dependencies.

    iBaffiPro ha scritto:


    Non posso scrivere:
    <tomcat.version>9</tomcat.version>
    No, non puoi perché questo ${tomcat.version} è la versione delle dependency dichiarate nel <dependencyManagement> del spring-boot-dependencies. Quindi ad esempio la dipendenza
          <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>${tomcat.version}</version>
          </dependency>
    Le cui versioni le vedi qui: https://search.maven.org/artifact/org.apache.tomcat.embed/tomcat-embed-core
    Solo QUELLE elencate lì puoi mettere ... non numeri a caso tipo 9 ... 10 ecc....

    iBaffiPro ha scritto:


    E' davvero brutta questa cosa da inserire nel pom perché se su server reale ci fosse 9.0.60 la webapp non si avvierebbe
    Se il tuo progetto Spring Boot è impostato per funzionare "stand-alone", allora NON crea il war e quindi non produce nulla di deployabile su un Tomcat ESTERNO, a sè stante.
    Se vuoi impostare il progetto per creare war, è un altro discorso, si può fare, ci sono alcuni passi da fare sia a livello di pom.xml sia a livello di codice .....
  • Re: Perché Eclipse non usa la versione di Tomcat che ho scaricato?

    Io sono abituato a creare il .war che poi carico su un server Tomcat.
    A mio avviso conviene non usare questa specifica perché in locale si risparmiano molti passaggi e molte configurazioni. Sul server invece Spring Boot si adegua alla versione presente. Basta ricordarsi di installare su Linux o Windows al massimo Tomcat 9 per progetti in Spring Boot 2.x e la versione di Tomcat ultima per Spring Boot 3.x.
    Tu cosa mi consigli di fare? Concordi sulla mia scelta?
  • Re: Perché Eclipse non usa la versione di Tomcat che ho scaricato?

    iBaffiPro ha scritto:


    Io sono abituato a creare il .war che poi carico su un server Tomcat.
    A mio avviso conviene non usare questa specifica perché in locale si risparmiano molti passaggi e molte configurazioni.
    Guarda, dipende molto da che cosa devi fare, per quale motivo e per chi lo devi fare. Se devi fare applicazioni Spring Boot a scopo di sole "esercitazioni", va benissimo l'avvio stand-alone. Se vuoi fare qualcosa di più realistico e/o che potrebbe poi essere deployato su server esterni (anche pubblici, su internet) allora meglio lo sviluppo per creare war.
    Ma anche a livello lavorativo .. dipende ... Dove lavoro io sviluppo applicazioni Spring Boot ma sul notebook che ho in dotazione le avvio solo come stand-alone. E anche in ambienti "produzione" (che non sono pubblici ma solo "interni" per certi clienti) le applicazioni partono stand-alone, semplicemente perché c'è tutta una infrastruttura di pipeline, CI/CD, ecc.. (di cui non me ne occupo io ma i miei colleghi DevOps) per farlo.
Devi accedere o registrarti per scrivere nel forum
7 risposte