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&autoReconnectForPools=true&useUnicode=yes&characterEncoding=UTF-8&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.
Bereits ausprobiert valid valid sql und background validadion in der standalone.xml-Konfiguration. –
Das Problem ist beim Start. Die Ausnahme "java.net.UnknownHostException: db" wird angezeigt und das Datenquellensubsystem schlägt fehl –