rxue / dictionary

Practice in Java EE
1 stars 0 forks source link

dictionary/web : LEARNING: add MariaDB jta data source #110

Closed rxue closed 1 year ago

rxue commented 1 year ago

mariadb docker container could not start successfully, ports cannot be assigned => probably because the docker image with the latest tag has problem

Reference: https://stackoverflow.com/questions/72410663/error-starting-mariadb-on-docker-compose-build

=>

TODO : change to the version with older tag

rxue commented 1 year ago

encountered error:

 18:55:03,025 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "dictionary.war")]) - failure description: {
     "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.jboss.datasources.MariaDBDS"],
     "WFLYCTL0180: Services with missing/unavailable dependencies" => [
         "jboss.persistenceunit.\"dictionary.war#dev-mariadb\".__FIRST_PHASE__ is missing [jboss.naming.context.java.jboss.datasources.MariaDBDS]",
         "jboss.persistenceunit.\"dictionary.war#dev-mariadb\" is missing [jboss.naming.context.java.jboss.datasources.MariaDBDS]"
     ]
 }
 18:55:03,089 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 46) WFLYSRV0010: Deployed "dictionary.war" (runtime-name : "dictionary.war")
 18:55:03,090 INFO  [org.jboss.as.controller] (Controller Boot Thread) WFLYCTL0183: Service status report
 WFLYCTL0184:    New missing/unsatisfied dependencies:
       service jboss.naming.context.java.jboss.datasources.MariaDBDS (missing) dependents: [service jboss.persistenceunit."dictionary.war#dev-mariadb", service jboss.persistenceunit."dictionary.war#dev-mariadb".__FIRST_PHASE__] 
 WFLYCTL0448: 18 additional services are down due to their dependencies being missing or failed
 18:55:03,144 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0212: Resuming server
 18:55:03,146 ERROR [org.jboss.as] (Controller Boot Thread) WFLYSRV0026: WildFly Full 27.0.0.Final (WildFly Core 19.0.0.Final) started (with errors) in 4548ms - Started 399 of 651 services (21 services failed or missing dependencies, 361 services are lazy, passive or on-demand) - Server configuration file in use: standalone.xml

analysis

based on the error message WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.jboss.datasources.MariaDBDS"] , the JNDI java:jboss/datasources/MariaDBDS defined inside the persistence-unit named dev-mariadb is not recognized => probably META-INF/mariadb-ds.xml is not found by the Wildfly server after deployment

rxue commented 1 year ago

since use of *-ds.xml is deprecated based on the WARN log: WARN [org.jboss.as.connector] (MSC service thread 1-4) WFLYJCA0091: -ds.xml file deployments are deprecated. Support may be removed in a future version.

=> TODO: configure datasource on the server side on base of https://docs.wildfly.org/28/Getting_Started_Guide.html#modifying-the-example-datasource

rxue commented 1 year ago

Mariadb database connection refused:

 Caused by: java.sql.SQLNonTransientConnectionException: Socket fail to connect to host:address=(host=localhost)(port=3306)(type=primary). Connection refused
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.ConnectionHelper.connectSocket(ConnectionHelper.java:137)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.StandardClient.<init>(StandardClient.java:99)
    at org.mariadb.jdbc//org.mariadb.jdbc.Driver.connect(Driver.java:70)
    at org.mariadb.jdbc//org.mariadb.jdbc.Driver.connect(Driver.java:101)
    at org.mariadb.jdbc//org.mariadb.jdbc.Driver.connect(Driver.java:27)
    at org.jboss.ironjacamar.jdbcadapters@1.5.9.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:335)
    ... 37 more
 Caused by: java.net.ConnectException: Connection refused
    at java.base/sun.nio.ch.Net.pollConnect(Native Method)
    at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672)
    at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
    at java.base/java.net.Socket.connect(Socket.java:633)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.ConnectionHelper.connectSocket(ConnectionHelper.java:131)
    ... 42 more
rxue commented 1 year ago

got error cause:

 Caused by: java.sql.SQLNonTransientConnectionException: Socket fail to connect to host:address=(host=mariadb)(port=3306)(type=primary). mariadb
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.ConnectionHelper.connectSocket(ConnectionHelper.java:137)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.StandardClient.<init>(StandardClient.java:99)
    at org.mariadb.jdbc//org.mariadb.jdbc.Driver.connect(Driver.java:70)
    at org.mariadb.jdbc//org.mariadb.jdbc.Driver.connect(Driver.java:101)
    at org.mariadb.jdbc//org.mariadb.jdbc.Driver.connect(Driver.java:27)ase
    at org.jboss.ironjacamar.jdbcadapters@1.5.9.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:335)
    ... 37 more
 Caused by: java.net.UnknownHostException: mariadb
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:567)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
    at java.base/java.net.Socket.connect(Socket.java:633)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.ConnectionHelper.connectSocket(ConnectionHelper.java:131)
    ... 42 more

analysis

Based on the error cause, probably it is due to network configuration

rxue commented 1 year ago

encountered error:

 Caused by: java.sql.SQLSyntaxErrorException: (conn=227) DROP command denied to user 'root'@'172.19.0.3' for table 'Explanation'
    at org.mariadb.jdbc//org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:282)
    at org.mariadb.jdbc//org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:370)
    at org.mariadb.jdbc//org.mariadb.jdbc.message.ClientMessage.readPacket(ClientMessage.java:134)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.StandardClient.readPacket(StandardClient.java:883)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.StandardClient.readResults(StandardClient.java:822)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.StandardClient.readResponse(StandardClient.java:741)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:665)
    at org.mariadb.jdbc//org.mariadb.jdbc.Statement.executeInternal(Statement.java:956)
    at org.mariadb.jdbc//org.mariadb.jdbc.Statement.execute(Statement.java:1082)
    at org.mariadb.jdbc//org.mariadb.jdbc.Statement.execute(Statement.java:474)
    at org.jboss.ironjacamar.jdbcadapters@1.5.9.Final//org.jboss.jca.adapters.jdbc.WrappedStatement.execute(WrappedStatement.java:198)
    at org.hibernate@6.1.5.Final//org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54)
    ... 25 more

Solution reference: https://stackoverflow.com/questions/5016505/mysql-grant-all-privileges-on-database/5016587#5016587

rxue commented 1 year ago

encountered drop sequence error:

 Caused by: java.sql.SQLSyntaxErrorException: (conn=6) Unknown SEQUENCE: 'dictionary.explanation_id_seq'
    at org.mariadb.jdbc//org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:282)
    at org.mariadb.jdbc//org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:370)
    at org.mariadb.jdbc//org.mariadb.jdbc.message.ClientMessage.readPacket(ClientMessage.java:134)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.StandardClient.readPacket(StandardClient.java:883)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.StandardClient.readResults(StandardClient.java:822)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.StandardClient.readResponse(StandardClient.java:741)
    at org.mariadb.jdbc//org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:665)
    at org.mariadb.jdbc//org.mariadb.jdbc.Statement.executeInternal(Statement.java:956)
    at org.mariadb.jdbc//org.mariadb.jdbc.Statement.execute(Statement.java:1082)
    at org.mariadb.jdbc//org.mariadb.jdbc.Statement.execute(Statement.java:474)
    at org.jboss.ironjacamar.jdbcadapters@1.5.9.Final//org.jboss.jca.adapters.jdbc.WrappedStatement.execute(WrappedStatement.java:198)
    at org.hibernate@6.1.5.Final//org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54)
    ... 25 more