Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

di il
10 risposte

Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

Sto studiando questa applicazione:
https://github.com/Apress/beg-spring-boot-2/tree/master/chapter-08/springboot-multiple-datasources-demo
che spiega come collegarsi dalla stessa webapp a due database diversi e penso di aver capito bene tutto quanto ma l'applicazione fallisce e qualche dubbio resta.

Domanda 1
Non capisco alla perfezione perché nelle @Entity a volte si trova il costruttore vuoto e a volte no. Quando devo metterlo e quando no? Nel dubbio Posso inserirlo sempre?
User.java

	public User()
	{
	}
Order.java

	// Costruttore vuoto assente...
Domanda 2
L'applicazione fallisce dandomi questo avviso:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ordersEntityManagerFactory' defined in class path resource [com/apress/demo/config/OrdersDBConfig.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
Sembra che ci sia un errore in OrdersDBConfig.class ma non saprei dove mettere le mani. Dove/come si è procurata la classe di configurazione l'autore del libro?
L'unica modifica che ho fatto è questa:

// import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.jdbc.DataSourceBuilder;
In pratica in Spring Boot 2.0.0 il pacchetto DataSourceBuilder è stato spostato rispetto a Spring Boot 1.5.
L'applicazione parte e renderizza la vista ma è vuota come le tabelle del DBMS. In MySQL ci sono le tabelle ma sono prive di record.
Con H2 falliscono anche tutti i test come in MySQL.
Nei file .sql gli 'id' vengono assegnati dall'autore del file quando in realtà dovrebbe fare Hibernate: è lecito?
Ho provato a rimuovere tutti gli id dai file .sql ma non ho risolto. In questa esercitazione vorrei poter caricare i record da file .sql senza dover procedere manualmente oppure usando Java. E' possibile? Come potrei fare?
Insomma se all'autore tutto funziona alla perfezione perché a me da problemi. Dopo 3 anni uno script in Spring Boot + JPA è già da buttare?
Ecco il mio file .properties aggiornato:

datasource.security.driver-class-name=com.mysql.cj.jdbc.Driver
datasource.security.url=jdbc:mysql://localhost:3306/security?useSSL=false&serverTimezone=UTC&createDatabaseIfNotExist=true
datasource.security.username=root
datasource.security.password=admin
datasource.security.initialization-mode=always
datasource.orders.driver-class-name=com.mysql.cj.jdbc.Driver
datasource.orders.url=jdbc:mysql://localhost:3306/orders?useSSL=false&serverTimezone=UTC&createDatabaseIfNotExist=true
datasource.orders.username=root
datasource.orders.password=admin
datasource.orders.initialization-mode=always
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
logging.level.org.springframework=ERROR
Qualche modifica l'ho dovuta fare perché uso MySQL 8.0.21 ma non credo sia quello il problema.
Grazie anticipatamente

10 Risposte

  • Re: Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

    giannino1995 ha scritto:


    Sto studiando questa applicazione:
    https://github.com/Apress/beg-spring-boot-2/tree/master/chapter-08/springboot-multiple-datasources-demo
    Ogni giorno sono in trepidante attesa .... "cosa chiederà oggi giannino1995?"

    giannino1995 ha scritto:


    Domanda 1
    Non capisco alla perfezione perché nelle @Entity a volte si trova il costruttore vuoto e a volte no. Quando devo metterlo e quando no? Nel dubbio Posso inserirlo sempre?
    Le classi @Entity devono sempre avere un costruttore "no-arg" (senza argomenti), perché la classe la deve poter istanziare anche il ORM tramite reflection quando "tira su" dati dal db.

    Ora, dovresti ben sapere che se il programmatore non scrive alcun costruttore esplicito in una classe, il compilatore inserisce il costruttore di default che è appunto senza argomenti. Se il programmatore invece scrive almeno un costruttore esplicito, il compilatore NON inserisce il costruttore di default. Concetto non base ... SUPER-base di Java.

    In quel progetto, la classe User ha anche altri costruttori espliciti utili al progetto, quindi un costruttore esplicito senza argomenti ci vuole. In Address invece il costruttore di default generato dal compilatore è sufficiente.

    giannino1995 ha scritto:


    Domanda 2
    L'applicazione fallisce dandomi questo avviso:
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ordersEntityManagerFactory' defined in class path resource [com/apress/demo/config/OrdersDBConfig.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
    Sembra che ci sia un errore in OrdersDBConfig.class ma non saprei dove mettere le mani. Dove/come si è procurata la classe di configurazione l'autore del libro?
    No, non c'entra niente OrdersDBConfig e nemmeno Spring Boot in generale.

    Stai usando un JDK 11 o superiore (es. JDK 14)?? La API JAXB (per il binding classi<->XML) è stata rimossa dal framework da Java 11.

    Usa JDK 8. Oppure prova ad usare Spring Boot 2.2.6+ che dichiara il supporto di Java 14.

    giannino1995 ha scritto:


    L'unica modifica che ho fatto è questa:
    
    // import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
    import org.springframework.boot.jdbc.DataSourceBuilder;
    
    In pratica in Spring Boot 2.0.0 il pacchetto DataSourceBuilder è stato spostato rispetto a Spring Boot 1.5.
    Sì, in effetti la classe è stata spostata. Ma in Spring Boot 2 è anche diventata "generica", ovvero DataSourceBuilder<T extends DataSource>

    Quindi va fatta una modifica in OrdersDBConfig.java E SecurityDBConfig.java per cambiare l'import (svista dell'autore, sicuramente).

    giannino1995 ha scritto:


    L'applicazione parte e renderizza la vista ma è vuota come le tabelle del DBMS. In MySQL ci sono le tabelle ma sono prive di record.
    Con H2 falliscono anche tutti i test come in MySQL.
    Nei file .sql gli 'id' vengono assegnati dall'autore del file quando in realtà dovrebbe fare Hibernate: è lecito?
    Ho provato a rimuovere tutti gli id dai file .sql ma non ho risolto. In questa esercitazione vorrei poter caricare i record da file .sql senza dover procedere manualmente oppure usando Java. E' possibile? Come potrei fare?
    Insomma se all'autore tutto funziona alla perfezione perché a me da problemi. Dopo 3 anni uno script in Spring Boot + JPA è già da buttare?
    Fatte quelle 2 modifiche per il package di DataSourceBuilder, lanciando mvn test (nota: JDK 8 ) i 2 test che usano H2 passano benissimo con successo. Lanciando mvn spring-boot:run (che usa ancora H2) la pagina funziona correttamente e mostra users e orders.

    Con MySQL non ho ancora provato, provo più tardi.
  • Re: Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

    Come fai a sapere tutte queste cose?!?
    No uso JDK 1.8 ma a volte mi dimentico di cambiarlo. Ho scelto 1.14 su IntelliJ come impostazione di default ma effettivamente dovrei cambiarla.
    Non ho capito come editare le due classi, mi potresti inviare le correzioni per favore?
    Grazie come sempre

    P.S.: Aspettati un'estate ancora più calda e più torrida, questo Spring Boot mi sta facendo impazzire. Non so come tu riesca a sapere sempre tutto e senza neppure cimentarti un pochetto.
  • Re: Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

    giannino1995 ha scritto:


    Non ho capito come editare le due classi, mi potresti inviare le correzioni per favore?
    In OrdersDBConfig.java E SecurityDBConfig.java metti:

    import org.springframework.boot.jdbc.DataSourceBuilder;

    invece di:

    import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;

    giannino1995 ha scritto:


    P.S.: Aspettati un'estate ancora più calda e più torrida, questo Spring Boot mi sta facendo impazzire.
    Ok tanto, causa varie "disavventure" lavorative, sono in ferie tutto Agosto ... e a casa.

    giannino1995 ha scritto:


    Non so come tu riesca a sapere sempre tutto e senza neppure cimentarti un pochetto.
    In realtà certo che mi sono già "cimentato" con Spring Boot, sia con progettini personali, sia per lavoro.
    E comunque ho già letto molto/abbastanza.
  • Re: Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

    andbin ha scritto:


    In OrdersDBConfig.java E SecurityDBConfig.java metti:
    import org.springframework.boot.jdbc.DataSourceBuilder;
    invece di:
    import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
    Si si, l'ho fatto ed in entrambi i file.
    Ho anche editato WebMvcConfig in questo modo:
    
    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer
    {
    
    perché IntelliJ IDEA mi suggeriva che la classe era deprecata (questo mi sono dimenticato di dirtelo) ma poco importa nel senso che sia con WebMvcConfigurer che con WebMvcConfigurerAdapter l'applicazione non funziona.
    Vorrei caricare i dati dai file .sql almeno con MySQL (H2 mi interessa meno).

    Mi spiace per le tue vacanze.
  • Re: Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

    giannino1995 ha scritto:


    perché IntelliJ IDEA mi suggeriva che la classe era deprecata
    Non cambiare le cose "solo perché te l'ha detto l'IDE" ... e comunque non è sicuramente quella la questione principale.


    Comunque ho provato con il mio MySQL.
    Precondizioni:

    1) JDK 8 / Maven 3.6.3, tutto da PROMPT (niente IDE ... non mi frega...)

    2) le "solite" modifiche specifiche per il mio MySQL:
    - <mysql.version>8.0.21</mysql.version> dentro <properties> nel pom
    - driver class com.mysql.cj.jdbc.Driver
    - url con ?serverTimezone=UTC&createDatabaseIfNotExist=true (ho messo createDatabaseIfNotExist SOLO per comodità visto che ci sono 2 datasource)
    - mia password di root del MySQL

    3) SOLO le due modifiche del import per DataSourceBuilder

    Quindi:

    TEST:
    mvn test -Dspring.profiles.active=prod

    Vedo da log che i due script orders-data.sql/security-data.sql vengono eseguiti, i due test passano con successo e le tabelle sono tutte popolate.


    RUN:
    Drop dei 2 db test/orders (per sicurezza)

    mvn spring-boot:run -Dspring-boot.run.profiles=prod

    Vedo da log che i due script orders-data.sql/security-data.sql vengono eseguiti, la pagina al localhost:8080 è visibile con i dati di users/orders. Se cambio nel MySQL un nome di user, la modifica si vede nel browser (quindi USA MySQL).


    Funziona tutto.
  • Re: Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

    Ti allego anche il mio progetto:
    https://gofile.io/d/nMbp4
    Sia con H2 che con MySQL ottengo questo: Con H2 non so dirti cosa accade ma con MySQL ti posso assicurare che IntelliJ IDEA crea lo schema dei 2 database ma lascia le tabelle vuote. I log non mi aiutano a capire.
    LOG SPRING BOOT:
    "C:\Program Files\Java\jdk1.8.0_261\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.2\lib\idea_rt.jar=51346:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_261\lib\ant-javafx.jar;C:\Program Files\Java\jdk1.8.0_261\lib\dt.jar;C:\Program Files\Java\jdk1.8.0_261\lib\javafx-mx.jar;C:\Program Files\Java\jdk1.8.0_261\lib\jconsole.jar;C:\Program Files\Java\jdk1.8.0_261\lib\packager.jar;C:\Program Files\Java\jdk1.8.0_261\lib\sa-jdi.jar;C:\Program Files\Java\jdk1.8.0_261\lib\tools.jar;C:\DATI\IntelliJ\08-springboot-multiple-datasources-demo\target\classes;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter\2.0.0.BUILD-SNAPSHOT\spring-boot-starter-2.0.0.BUILD-20180301.043915-633.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.0.0.BUILD-SNAPSHOT\spring-boot-starter-logging-2.0.0.BUILD-20180301.043903-634.jar;C:\Users\DELL\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\DELL\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\DELL\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.10.0\log4j-to-slf4j-2.10.0.jar;C:\Users\DELL\.m2\repository\org\apache\logging\log4j\log4j-api\2.10.0\log4j-api-2.10.0.jar;C:\Users\DELL\.m2\repository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;C:\Users\DELL\.m2\repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;C:\Users\DELL\.m2\repository\org\yaml\snakeyaml\1.19\snakeyaml-1.19.jar;C:\Users\DELL\.m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-core\5.0.4.RELEASE\spring-core-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-jcl\5.0.4.RELEASE\spring-jcl-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-devtools\2.0.0.BUILD-SNAPSHOT\spring-boot-devtools-2.0.0.BUILD-20180301.043825-635.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot\2.0.0.BUILD-SNAPSHOT\spring-boot-2.0.0.BUILD-20180301.043920-633.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-context\5.0.4.RELEASE\spring-context-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.0.0.BUILD-SNAPSHOT\spring-boot-autoconfigure-2.0.0.BUILD-20180301.043806-635.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-configuration-processor\2.0.0.BUILD-SNAPSHOT\spring-boot-configuration-processor-2.0.0.BUILD-20180301.043823-635.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\2.0.0.BUILD-SNAPSHOT\spring-boot-starter-data-jpa-2.0.0.BUILD-20180301.043850-634.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.0.0.BUILD-SNAPSHOT\spring-boot-starter-aop-2.0.0.BUILD-20180301.043844-635.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-aop\5.0.4.RELEASE\spring-aop-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\aspectj\aspectjweaver\1.8.13\aspectjweaver-1.8.13.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.0.0.BUILD-SNAPSHOT\spring-boot-starter-jdbc-2.0.0.BUILD-20180301.043858-634.jar;C:\Users\DELL\.m2\repository\com\zaxxer\HikariCP\2.7.8\HikariCP-2.7.8.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-jdbc\5.0.4.RELEASE\spring-jdbc-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\hibernate\hibernate-core\5.2.14.Final\hibernate-core-5.2.14.Final.jar;C:\Users\DELL\.m2\repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;C:\Users\DELL\.m2\repository\org\hibernate\javax\persistence\hibernate-jpa-2.1-api\1.0.0.Final\hibernate-jpa-2.1-api-1.0.0.Final.jar;C:\Users\DELL\.m2\repository\org\javassist\javassist\3.22.0-GA\javassist-3.22.0-GA.jar;C:\Users\DELL\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\DELL\.m2\repository\org\jboss\jandex\2.0.3.Final\jandex-2.0.3.Final.jar;C:\Users\DELL\.m2\repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;C:\Users\DELL\.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;C:\Users\DELL\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.0.1.Final\hibernate-commons-annotations-5.0.1.Final.jar;C:\Users\DELL\.m2\repository\javax\transaction\javax.transaction-api\1.2\javax.transaction-api-1.2.jar;C:\Users\DELL\.m2\repository\org\springframework\data\spring-data-jpa\2.0.5.RELEASE\spring-data-jpa-2.0.5.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\data\spring-data-commons\2.0.5.RELEASE\spring-data-commons-2.0.5.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-orm\5.0.4.RELEASE\spring-orm-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-tx\5.0.4.RELEASE\spring-tx-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-beans\5.0.4.RELEASE\spring-beans-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-aspects\5.0.4.RELEASE\spring-aspects-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.0.0.BUILD-SNAPSHOT\spring-boot-starter-web-2.0.0.BUILD-20180301.043912-634.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.0.0.BUILD-SNAPSHOT\spring-boot-starter-json-2.0.0.BUILD-20180301.043900-634.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.9.4\jackson-databind-2.9.4.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.9.4\jackson-core-2.9.4.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.4\jackson-datatype-jdk8-2.9.4.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.4\jackson-datatype-jsr310-2.9.4.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.4\jackson-module-parameter-names-2.9.4.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.0.0.BUILD-SNAPSHOT\spring-boot-starter-tomcat-2.0.0.BUILD-20180301.043909-634.jar;C:\Users\DELL\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\8.5.28\tomcat-embed-core-8.5.28.jar;C:\Users\DELL\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\8.5.28\tomcat-embed-el-8.5.28.jar;C:\Users\DELL\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\8.5.28\tomcat-embed-websocket-8.5.28.jar;C:\Users\DELL\.m2\repository\org\hibernate\validator\hibernate-validator\6.0.7.Final\hibernate-validator-6.0.7.Final.jar;C:\Users\DELL\.m2\repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-web\5.0.4.RELEASE\spring-web-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-webmvc\5.0.4.RELEASE\spring-webmvc-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-expression\5.0.4.RELEASE\spring-expression-5.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-thymeleaf\2.0.0.BUILD-SNAPSHOT\spring-boot-starter-thymeleaf-2.0.0.BUILD-20180301.043908-634.jar;C:\Users\DELL\.m2\repository\org\thymeleaf\thymeleaf-spring5\3.0.9.RELEASE\thymeleaf-spring5-3.0.9.RELEASE.jar;C:\Users\DELL\.m2\repository\org\thymeleaf\thymeleaf\3.0.9.RELEASE\thymeleaf-3.0.9.RELEASE.jar;C:\Users\DELL\.m2\repository\org\attoparser\attoparser\2.0.4.RELEASE\attoparser-2.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\unbescape\unbescape\1.1.5.RELEASE\unbescape-1.1.5.RELEASE.jar;C:\Users\DELL\.m2\repository\org\thymeleaf\extras\thymeleaf-extras-java8time\3.0.1.RELEASE\thymeleaf-extras-java8time-3.0.1.RELEASE.jar;C:\Users\DELL\.m2\repository\mysql\mysql-connector-java\8.0.21\mysql-connector-java-8.0.21.jar;C:\Users\DELL\.m2\repository\com\google\protobuf\protobuf-java\3.11.4\protobuf-java-3.11.4.jar;C:\Users\DELL\.m2\repository\com\h2database\h2\1.4.196\h2-1.4.196.jar" com.apress.demo.SpringbootMultipleDSDemoApplication
    15:36:04.307 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Included patterns for restart : []
    15:36:04.307 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Excluded patterns for restart : [/spring-boot-starter/target/classes/, /spring-boot-autoconfigure/target/classes/, /spring-boot-starter-[\w-]+/, /spring-boot/target/classes/, /spring-boot-actuator/target/classes/, /spring-boot-devtools/target/classes/]
    15:36:04.307 [main] DEBUG org.springframework.boot.devtools.restart.ChangeableUrls - Matching URLs for reloading : [file:/C:/DATI/IntelliJ/08-springboot-multiple-datasources-demo/target/classes/]
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::  (v2.0.0.BUILD-SNAPSHOT)
    
    2020-08-12 15:36:04.667  INFO 7912 --- [  restartedMain] .a.d.SpringbootMultipleDSDemoApplication : Starting SpringbootMultipleDSDemoApplication on DESKTOP-N74IH9B with PID 7912 (C:\DATI\IntelliJ\08-springboot-multiple-datasources-demo\target\classes started by DELL in C:\DATI\IntelliJ\08-springboot-multiple-datasources-demo)
    2020-08-12 15:36:04.667  INFO 7912 --- [  restartedMain] .a.d.SpringbootMultipleDSDemoApplication : The following profiles are active: prod
    2020-08-12 15:36:06.154  INFO 7912 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2020-08-12 15:36:06.154  INFO 7912 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.28
    2020-08-12 15:36:06.169  INFO 7912 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk1.8.0_261\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jdk1.8.0_261;C:\JAVA\apache-maven-3.6.3;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\DELL\AppData\Local\Microsoft\WindowsApps;;.]
    2020-08-12 15:36:06.263  INFO 7912 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2020-08-12 15:36:06.486  INFO 7912 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
    	name: default
    	...]
    2020-08-12 15:36:06.533  INFO 7912 --- [  restartedMain] org.hibernate.Version                    : HHH000412: Hibernate Core {5.2.14.Final}
    2020-08-12 15:36:06.534  INFO 7912 --- [  restartedMain] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
    2020-08-12 15:36:06.559  INFO 7912 --- [  restartedMain] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
    2020-08-12 15:36:06.625  INFO 7912 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
    2020-08-12 15:36:06.792  INFO 7912 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
    2020-08-12 15:36:06.807  INFO 7912 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
    2020-08-12 15:36:07.208  INFO 7912 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
    	name: default
    	...]
    2020-08-12 15:36:07.224  INFO 7912 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Starting...
    2020-08-12 15:36:07.224  INFO 7912 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Start completed.
    2020-08-12 15:36:07.224  INFO 7912 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
    2020-08-12 15:36:08.067  INFO 7912 --- [  restartedMain] .a.d.SpringbootMultipleDSDemoApplication : Started SpringbootMultipleDSDemoApplication in 3.744 seconds (JVM running for 4.604)
    2020-08-12 15:36:08.515  INFO 7912 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
    2020-08-12 15:36:08.665  INFO 7912 --- [nio-8080-exec-2] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory
    2020-08-12 15:36:08.757  INFO 7912 --- [nio-8080-exec-2] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory
    
    LOG DEI SOLI TEST:
    https://gofile.io/d/Lwue6 (troppo lungo, devo allegartelo in altro modo)
    Come puoi vedere uso la JDK corretta: "C:\Program Files\Java\jdk1.8.0_261\bin\java.exe"
    Puoi dirmi se il mio script modificato sul tuo computer funziona?
    Trovo strano che sul tuo computer funzioni e sul mio no.
    Usi Apple, Windows o Linux?
    Il DBMS è in locale oppure su Server?
    Ci deve essere una spiegazione...
  • Re: Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

    giannino1995 ha scritto:


    Ti allego anche il mio progetto:
    https://gofile.io/d/nMbp4
    Ho fatto il diff con WinMerge rispetto al mio (che è quello ORIGINALE dal repo del libro).

    a) NON serve il initialization-mode=always

    b) hai messo il logging di org.springframework a ERROR. Ok ma così vedi meno!!! Toglilo o abbassa il livello (almeno a INFO).

    c) i due db originalmente si chiamano test e orders. Perché devi cambiare il nome al primo??


    Io ho modificato SOLO quello che ho detto prima.
  • Re: Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

    andbin ha scritto:


    a) NON serve il initialization-mode=always
    b) hai messo il logging di org.springframework a ERROR. Ok ma così vedi meno!!! Toglilo o abbassa il livello (almeno a INFO).
    c) i due db originalmente si chiamano test e orders. Perché devi cambiare il nome al primo??


    a) E' questo che bloccava l'applicazione. Ah che goduria vedere la webapp funzionare!
    In un'applicazione passata invece avevo fatto il contrario per farla funzionare avevo editato *.initialize=true che mi veniva segnalato come deprecato e lo avevo sostituito con *.initialization-mode=always. Va detto che in quel caso però si usava la configurazione automatica, non manuale.
    b) Hai ragione me ne sono accorto dopo che ho postato (comincio a dare le traveggole).
    c) Non mi piace test e poi volevo vedere se l'applicazione funzionava come hai fatto tu con il record.

    Comunque ho notato una cosa strana. Dubitando del mio IDE ho provato ad usare il prompt come fai tu e ho notato che non funziona più ma ti assicuro che funzionava alla perfezione dopo le tue dritte. Ho smesso di usarlo perché IntelliJ è più comodo ma ti assicuro che funzionava. Puoi vedere se la mia configurazione è corretta?
    FONTE > https://github.com/Apress/beg-spring-boot-2/tree/master/chapter-08/springboot-multiple-datasources-demo
    Microsoft Windows [Versione 10.0.19041.450]
    (c) 2020 Microsoft Corporation. Tutti i diritti sono riservati.

    C:\WINDOWS\system32>cd C:\DATI\IntelliJ\08-springboot-multiple-datasources-demo

    C:\DATI\IntelliJ\08-springboot-multiple-datasources-demo>mvn spring-boot:run
    "mvn" non è riconosciuto come comando interno o esterno,
    un programma eseguibile o un file batch.

    C:\DATI\IntelliJ\08-springboot-multiple-datasources-demo>mvn spring-boot:run
    "mvn" non è riconosciuto come comando interno o esterno,
    un programma eseguibile o un file batch.

    C:\DATI\IntelliJ\08-springboot-multiple-datasources-demo>

    1.png
    1.png


    2.png
    2.png


    3.png
    3.png

    A presto e grazie infinite
  • Re: Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

    È sbagliato il contenuto della variabile PATH

    Ri-vedi https://www.iprogrammatori.it/forum-programmazione/post8657391.html#p8657391
  • Re: Collegarsi a DBMS diversi con la stessa WebApp in Spring Boot 2.0.0

    E' molto strano, avevo provato con /bin inizialmente e non funzionava così lo avevo rimosso risolvendo. Sarò io che soffro di arteriosclerosi, mi sembra l'opzione più probabile. Comunque aggiungendo \bin funziona tutto, mille grazie.
Devi accedere o registrarti per scrivere nel forum
10 risposte