Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hubungkan aplikasi web pada wadah Tomcat ke wadah mysql melalui hibernate

Saya pikir saya punya ide mengapa Anda mendapatkan pengecualian ini. Anda menjalankan 2 kontainer,

  1. wadah mysql untuk basis data
  2. Wadah kucing jantan

Tentunya, pengecualian Anda adalah karena pengecualian inisialisasi variabel statis,

public static final SessionFactory sessionFactory = buildSessionFactory();

Juga, file properti Anda memiliki sedikit masalah,

  1. connection.url harus hibernate.connection.url
  2. Anda telah menyebutkan nama host mysql Anda sebagai localhost tetapi berjalan di wadah lain. Anda harus mengubahnya menjadi "mysql" jika Anda telah menamai wadah mysql Anda sebagai "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)

Jelas menunjukkan bahwa Anda

  1. Mysql tidak berjalan. Cek dengan membuat koneksi dari sql client seperti squirrel.
  2. Wadah Tomcat tidak dapat terhubung ke wadah mysql. Periksa ping cepat dengan melakukan

    docker exec tomcat ping mysql  
    

Butuh beberapa saat untuk menyebarkan aplikasi ini. Saya telah memecahkan masalah yang Anda tanyakan dalam pertanyaan ini. Masalah utama adalah bahwa mysql tidak dapat dijangkau dari wadah Tomcat. Juga, port yang ditentukan juga tidak benar. Berikut ini adalah 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>

Ada beberapa masalah seperti berikut,

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

Tapi ini karena sensitivitas kasus unix yang mungkin tidak ada dalam kasus Windows. Pengecualian lainnya sepele untuk dipecahkan. Saya menjalankan perintah buruh pelabuhan berikut,

 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

dan sisa perintah jaringan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan SQL untuk menemukan Kunci Utama dari sebuah tabel?

  2. MySQL UPDATE menambahkan data ke dalam kolom

  3. Bagaimana cara mengakses database mysql online di android?

  4. Cara memilih data dari dua tabel menggunakan satu kueri

  5. MySQL Pilih Baris N Teratas