Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Tomcat e Postgresql

Hybrid View

  1. #1
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non è comunque la soluzione corretta/sensata. Non dovresti mettere jar nella lib di Tomcat se non ci sono motivi ben precisi (perché quelli messi lì diventano "globali" per tutte le webapp).
    Tra l'altro non avrebbe nemmeno molto senso usare Maven se poi tanto devi andare a copiare a manina le dipendenze altrove.

    Piuttosto mi viene un dubbio .. un sospetto più che altro. Come stai facendo il build/deploy della webapp? Da un IDE? Da prompt? E soprattutto, cosa hai messo come <packaging> nel pom.xml ?
    Perché se hai messo <packaging>jar</packaging> o non l'hai messo proprio (che equivale a specificare jar), allora questo è il problema ed errore.

    Buongiorno,

    Uso IntelliJ come ide, e questo è il mio pom

    codice:
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>sfm</groupId>
        <artifactId>sfm</artifactId>
        <packaging>war</packaging>
        <version>1.0-SNAPSHOT</version>
        <name>sfm Maven Webapp</name>
        <url>http://maven.apache.org</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>21</maven.compiler.source>
            <maven.compiler.target>21</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.bundles/jaxrs-ri -->
    <dependency>
                <groupId>org.glassfish.jersey.bundles</groupId>
                <artifactId>jaxrs-ri</artifactId>
                <version>3.1.10</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/jakarta.platform/jakarta.jakartaee-web-api -->
    <dependency>
                <groupId>jakarta.platform</groupId>
                <artifactId>jakarta.jakartaee-web-api</artifactId>
                <version>11.0.0</version>
                <scope>provided</scope>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
    <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>42.7.5</version>
                <scope>provided</scope>
    </dependency>
    
            <!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl  
    <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
                <version>4.0.5</version>
            </dependency>
    
    </dependencies>
    
        <build>
            <finalName>sfm</finalName>
        </build>
    </project>
    Si sono a conoscenza che le librerie mese nella cartella tomcat/lib sono "shared" con tutte le applicazioni caricate sul server.
    Condivido sul fatto di utilizzare maven e poi andare a posizionare manualmente la libreria non è "sensato". Anche se spero che sia un caso isolato questo di tomcat.

    Resto in tua attesa. Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da psychopathic Visualizza il messaggio
    Uso IntelliJ come ide, e questo è il mio pom
    Ok, il pom in effetti è corretto.

    Lo scope provided è ok per jakarta.jakartaee-web-api. Tira dentro molte cose (è una dipendenza di "piattaforma" intera) ma sono tutte provided, quindi usate solo in compilazione.

    Per il postgresql invece lo scope provided è scorretto. Se proprio vuoi mettere lo scope, al massimo dovrebbe essere <scope>runtime</scope> che ha anche più senso (i driver JDBC di norma non servono in compilazione ma solo a runtime).

    Pertanto, fai questa correzione (e togli il jar dalla c:\tomcat-10.1.40\lib !). Quindi lancia un mvn package (da prompt o l'equivalente da IDE). Ti crea il war e se ci guardi dentro, dovresti trovare la WEB-INF/lib/ con svariati jar, tra cui anche il postgresql-42.7.5.jar.

    Se c'è e fai il deploy del war, funziona? Se sì, stop, il problema non c'è o perlmeno non è a questi livelli ma forse altrove.

    L'unica cosa che non hai descritto bene è come fai il deploy. Dall'IDE? Se ben ricordo (ed è ancora così), l'IntelliJ community non ha il supporto nativo di Tomcat mentre quello commerciale ha già tutte le integrazioni per i server.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Ok, il pom in effetti è corretto.

    Lo scope provided è ok per jakarta.jakartaee-web-api. Tira dentro molte cose (è una dipendenza di "piattaforma" intera) ma sono tutte provided, quindi usate solo in compilazione.

    Per il postgresql invece lo scope provided è scorretto. Se proprio vuoi mettere lo scope, al massimo dovrebbe essere <scope>runtime</scope> che ha anche più senso (i driver JDBC di norma non servono in compilazione ma solo a runtime).

    Pertanto, fai questa correzione (e togli il jar dalla c:\tomcat-10.1.40\lib !). Quindi lancia un mvn package (da prompt o l'equivalente da IDE). Ti crea il war e se ci guardi dentro, dovresti trovare la WEB-INF/lib/ con svariati jar, tra cui anche il postgresql-42.7.5.jar.

    Se c'è e fai il deploy del war, funziona? Se sì, stop, il problema non c'è o perlmeno non è a questi livelli ma forse altrove.

    L'unica cosa che non hai descritto bene è come fai il deploy. Dall'IDE? Se ben ricordo (ed è ancora così), l'IntelliJ community non ha il supporto nativo di Tomcat mentre quello commerciale ha già tutte le integrazioni per i server.
    Ciao, domani farò una prova, ma il problema è proprio quando la libreria la mette dentro WEB-INF/lib/. Quando la libreria di postgresql è qui dentro non viene caricata/registrata. mentre le la sposto dentro tomcat/lib, viene correttamente caricata/registrata e alla chiusura dell'app viene deregistrata correttamente.

    Per il deploy, con intellj creo il file war, poi lo carico con tomcat ed eseguo il deploy dalla schermata manager di tomcat.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.