sql >> Databasteknik >  >> RDS >> Mysql

Anslut en webbapp på Tomcat-behållaren till mysql-behållaren via viloläge

Jag tror att jag har en aning om varför du får detta undantag. Du kör 2 behållare,

  1. mysql-behållare för databas
  2. Tomcat-behållare

Visst beror ditt undantag på initiering av statiska variabler,

public static final SessionFactory sessionFactory = buildSessionFactory();

Dessutom har din egendomsfil få problem,

  1. connection.url bör vara hibernate.connection.url
  2. Du har nämnt ditt mysql-värdnamn som localhost men det körs i en annan behållare. Du bör ändra den till "mysql" om du har döpt din mysql-behållare till "mysql"
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:214)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:298)

Visar tydligt att din antingen

  1. Mysql körs inte. Kontrollera genom att göra en anslutning från sql-klienten som squirrel.
  2. Tomcat-behållaren kan inte ansluta till mysql-behållaren. Kontrollera en snabb ping genom att göra

    docker exec tomcat ping mysql  
    

Det tog ett tag för mig att distribuera den här applikationen. Jag har löst problemet du har ställt i denna fråga. Det primära problemet var att mysql inte var tillgänglig från Tomcat-behållaren. Den angivna porten var inte heller korrekt. Följande är hibernate.cfg.xml,

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>

<!-- queste configurazioni sono per il testing in locale  -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://mysql:3306/AT_DB</property>

<property name="hibernate.connection.username">root</property>
<property name="connection.password">lxit</property>

 ....rest of configuration....      

    </session-factory>
</hibernate-configuration>

Det finns få problem som att följa,

17-Feb-2017 16:07:53.156 INFO [http-nio-8080-exec-1] org.hibernate.dialect.Dialect.<init> HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
17-Feb-2017 16:07:53.776 INFO [http-nio-8080-exec-1] org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.processGetTableResults HHH000262: Table not found: ClientUser
17-Feb-2017 16:07:53.777 INFO [http-nio-8080-exec-1] org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.processGetTableResults HHH000262: Table not found: ClientUser
17-Feb-2017 16:07:53.818 INFO [http-nio-8080-exec-1] org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.processGetTableResults HHH000262: Table not found: Post
17-Feb-2017 16:07:53.819 INFO [http-nio-8080-exec-1] org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.processGetTableResults HHH000262: Table not found: Post
17-Feb-2017 16:07:53.828 INFO [http-nio-8080-exec-1] org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.processGetTableResults HHH000262: Table not found: SessionToken
17-Feb-2017 16:07:53.828 INFO [http-nio-8080-exec-1] org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.processGetTableResults HHH000262: Table not found: SessionToken
17-Feb-2017 16:07:53.830 WARN [http-nio-8080-exec-1] org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl.handleException GenerationTarget encountered exception accepting command : Unable to execut

Men dessa beror på skiftlägeskänslighet hos unix som förmodligen inte fanns där i Windows. Resten av undantagen är triviala att lösa. Jag körde följande docker-kommandon,

 sudo docker run -ti --rm -p 8888:8080 -p 8009:8009 -v $(pwd):/usr/local/tomcat/webapps/ --name tomcat tomcat:9-jre8 bash

 sudo docker run -d --name mysql -p 49162:3306 -p 49161:80 -p 49160:22 lxitgto/mysql-phpmyadmin:v1

och resten av nätverkskommandot.




  1. Vad händer om MySQL-anslutningar kontinuerligt inte stängs på PHP-sidor?

  2. Skillnaden mellan två tabellstrukturer

  3. Hur återställer man data från en raderad Docker-behållare? Hur återansluter man den till data?

  4. Hur man konfigurerar flytande nHibernate med MySQL