2016-09-14 1 views
0

Ich benutze Docker-Compose, um 1 Container mit Jboss Wildfly 10 und ein weiteres mit MySQL zu starten. Wenn der MySQL-Container dauert einige Zeit zu starten, und in diesem Fall ist die Wildfly gibt den folgenden Fehler:Orchestration zwischen Wildfly und Mysql-Datenbank

12:42:35,612 WARN [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (ServerService Thread Pool -- 61) IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: IJ031084: Unable to create connection 
... 
Caused by: java.net.UnknownHostException: db 
... 

und die wilfly gestartet (mit Fehlern):

12:42:40,346 ERROR [org.jboss.as] (Controller Boot Thread) WFLYSRV0026: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) started (with errors) in 14048ms - Started 492 of 818 services (57 services failed or missing dependencies, 383 services are lazy, passive or on-demand) 

wenn der MySQL Container Wird später gestartet, hat es keine Auswirkungen auf Wildfliegen.

Mein Docker-compose.yml ist:

api: 
    image: eu.gcr.io/jornaloficial-1265/pt.globaleda.jo-api 
    environment: 
     MYSQL_USER: service 
     MYSQL_PASSWORD: service 
     MYSQL_DATABASE: api 
     MYSQL_HOST: db 
    networks: 
     - back 
    db: 
    image: mysql:5.7.11 
    environment: 
     MYSQL_ROOT_PASSWORD: root 
    volumes: 
     - db-data:/var/lib/mysql 
    networks: 
     - back 

Mein Dockerfile für api Service:

FROM jboss/wildfly:10.0.0.Final 
MAINTAINER José Meireles "[email protected]" 

ADD mysql-connector-java-5.1.38-bin.jar /opt/jboss/wildfly/modules/system/layers/base/com/mysql/main/ 
ADD module.xml /opt/jboss/wildfly/modules/system/layers/base/com/mysql/main/ 
ADD keycloak-wildfly-adapter-dist-1.9.1.Final.tar.gz /opt/jboss/wildfly/ 
ADD standalone.xml /opt/jboss/wildfly/standalone/configuration/standalone.xml 
ADD ato_template.odt /opt/jboss/ 
RUN mkdir /opt/jboss/pdf-src 
RUN mkdir /opt/jboss/pdf-dest 
ADD pdf-src /opt/jboss/pdf-src/ 
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0"] 
ADD api.war /opt/jboss/wildfly/standalone/deployments/ 

Und die Konfiguration der Datenquelle in meinem standalone.xml:

   <datasource jndi-name="java:/mydb" pool-name="my_pool" 
        enabled="true" use-java-context="true"> 
        <connection-url>jdbc:mysql://${env.MYSQL_HOST}/${env.MYSQL_DATABASE}?autoReconnect=true&amp;autoReconnectForPools=true&amp;useUnicode=yes&amp;characterEncoding=UTF-8&amp;useSSL=false</connection-url> 
        <driver>mysql</driver> 
        <security> 
         <user-name>${env.MYSQL_USER}</user-name> 
         <password>${env.MYSQL_PASSWORD}</password> 
        </security> 
        <validation> 
         <background-validation>true</background-validation> 
         <check-valid-connection-sql>SELECT 1</check-valid-connection-sql> 
         <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> 
         <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/> 
        </validation> 
       </datasource> 

Um das Problem zu reproduzieren:

docker-compose down 
docker-compose up -d api 
sleep 10 
docker-compose up -d db 
docker-compose logs 

Es ist für Wildfly möglich zu erkennen, wenn die Datenbank bereit ist, oder als Alternative fehlschlagen und beenden, wenn das Datenquellen-Subsystem beendet wird? In diesem späteren Fall kann ich ein Skript verwenden, das die Wildfliege in einer Schleife startet.

Antwort

0

Die Datenquellenkonfiguration von WildFly bietet die Möglichkeit, Verbindungen zu validieren. In der Management GUI wählen Sie Konfiguration -> Subsysteme -> Datenquellen -> Nicht-XA -> ProcessEngine -> View. Wählen Sie "Validierung" aus den Registerkarten auf dem Bildschirm.

Klicken Sie auf den Link "Bearbeiten". In der "Check gültige SQL" -Box, geben Sie Folgendes ein:

SELECT 1

Ich überprüfe auch die "Background Validation" -Box. Speichern Sie die Konfiguration (möglicherweise müssen Sie zuerst die Datenquelle deaktivieren und diesen Vorgang erneut durchführen und/oder Sie müssen den Server möglicherweise neu laden).

Diese Konfiguration führt eine ständige Überprüfung der Datenquellenverbindung durch.

Eine andere Sache, die Sie tun können, ist die Zeitüberschreitung in Camunda (glaube ich) für seine Datenquelle, obwohl ich nicht sagen kann, wie das gemacht wird. Ich denke, es ist ziemlich tolerant.

+0

Bereits ausprobiert valid valid sql und background validadion in der standalone.xml-Konfiguration. –

+0

Das Problem ist beim Start. Die Ausnahme "java.net.UnknownHostException: db" wird angezeigt und das Datenquellensubsystem schlägt fehl –