Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kết nối ứng dụng web trên vùng chứa tomcat với vùng chứa mysql qua chế độ ngủ đông

Tôi nghĩ rằng tôi có một ý tưởng tại sao bạn nhận được ngoại lệ này. Bạn đang chạy 2 vùng chứa,

  1. vùng chứa mysql cho cơ sở dữ liệu
  2. Vùng chứa Tomcat

Chắc chắn, ngoại lệ của bạn là do ngoại lệ khởi tạo biến tĩnh,

public static final SessionFactory sessionFactory = buildSessionFactory();

Ngoài ra, tệp thuộc tính của bạn có một số vấn đề,

  1. connection.url phải là hibernate.connection.url
  2. Bạn đã đề cập đến tên máy chủ mysql của mình là máy chủ cục bộ nhưng nó đang chạy trong một vùng chứa khác. Bạn nên thay đổi nó thành "mysql" nếu bạn đã đặt tên vùng chứa mysql của mình là "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)

Rõ ràng cho thấy rằng một trong hai của bạn

  1. Mysql không hoạt động. Kiểm tra bằng cách tạo kết nối từ ứng dụng sql như con sóc.
  2. Vùng chứa Tomcat không thể kết nối với vùng chứa mysql. Kiểm tra ping nhanh bằng cách thực hiện

    docker exec tomcat ping mysql  
    

Tôi đã mất một thời gian để triển khai ứng dụng này. Tôi đã giải quyết vấn đề bạn đã hỏi trong câu hỏi này. Vấn đề chính là không thể truy cập mysql từ vùng chứa tomcat. Ngoài ra, cổng được chỉ định cũng không đúng. Sau đây là 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>

Có một số vấn đề như sau,

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

Nhưng đây là do phân biệt chữ hoa chữ thường của unix mà có lẽ không có trong trường hợp Windows. Phần còn lại của ngoại lệ là nhỏ để giải quyết. Tôi đã chạy theo các lệnh của docker,

 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

và phần còn lại của lệnh mạng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi bảng MySQL để thêm nhận xét trên các cột

  2. Làm thế nào để quản lý Vai trò Người dùng trong Cơ sở dữ liệu?

  3. 3 cách để tìm vị trí của một chuỗi con trong một chuỗi trong MySQL

  4. Làm thế nào để tạo số ngẫu nhiên mà không lặp lại trong cơ sở dữ liệu bằng PHP?

  5. Quản lý MySQL với phpMyAdmin trên Ubuntu 10.10 (Maverick)