sql >> データベース >  >> RDS >> Mysql

tomcatコンテナ上のWebアプリをHibernate経由でmysqlコンテナに接続します

    なぜこの例外が発生するのか、私にはわかっていると思います。 2つのコンテナを実行しています。

    1. データベース用のmysqlコンテナ
    2. Tomcatコンテナ

    確かに、あなたの例外は静的変数の初期化例外によるものです、

    public static final SessionFactory sessionFactory = buildSessionFactory();
    

    また、プロパティファイルにはほとんど問題がありません。

    1. connection.url hibernate.connection.url
    2. mysqlホスト名をlocalhostとして指定しましたが、別のコンテナーで実行されています。 mysqlコンテナに「mysql」という名前を付けた場合は、「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)
    

    どちらかを明確に示しています

    1. Mysqlは実行されていません。 squirrelなどのSQLクライアントから接続して確認してください。
    2. Tomcatコンテナはmysqlコンテナに接続できません。実行してクイックpingを確認します

      docker exec tomcat ping mysql  
      

    このアプリケーションをデプロイするのに少し時間がかかりました。私はあなたがこの質問で尋ねた問題を解決しました。主な問題は、Tomcatコンテナからmysqlに到達できないことでした。また、指定されたポートも正しくありませんでした。以下は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>
    

    次のような問題はほとんどありません

    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
    

    しかし、これらは、Windowsの場合にはおそらく存在しなかったUNIXの大文字と小文字の区別によるものです。残りの例外は簡単に解決できます。次の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
    

    および残りのネットワークコマンド。




    1. 不明なMySQLサーバーホスト

    2. ストアドプロシージャでのSpringBootMySQLデータベース初期化エラー

    3. perlを使用してmysqlデータベースの変更を監視する方法はありますか?

    4. 2つのテーブルの2つの列を1つにマージします