2016-09-14 3 views
0

Я использую docker-compose для запуска 1 контейнера с jboss wildfly 10 и другого с mysql. Если контейнер MySQL занимает некоторое время, чтобы начать, и в этом случае wildfly дает следующее сообщение об ошибке:Orchestration bettween wildfly и база данных mysql

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 
... 

и wilfly запускается (с ошибками):

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) 

Когда контейнер MySQL позже начинается, это не влияет на wildfly.

Мой докер-compose.yml является:

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 

Мои Dockerfile для апи службы:

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/ 

и конфигурации источника данных в моем 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> 

Для воспроизведения проблемы:

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

Возможно ли, чтобы Wildfly обнаружил, когда база данных готова или как альтернативный сбой и выход, если вышла подсистема данных? В этом более позднем случае я могу использовать скрипт, который запускает wildfly в цикле

ответ

0

Конфигурация источника данных WildFly предлагает возможность проверки соединений. В графическом интерфейсе управления выберите Configuration -> Subsystems -> Datasources -> Non-XA -> ProcessEngine -> View. Выберите «Проверка» на вкладках на экране.

Нажмите ссылку «Изменить». В поле "Check Valid Sql", введите следующую команду:

ВЫБРАТЬ 1

Я также проверить "Background Validation" окно. Сохраните конфигурацию (возможно, вам придется сначала отключить источник данных и повторить этот процесс и/или вам может потребоваться перезагрузить сервер).

Эта конфигурация выполняет постоянную проверку соединения с источником данных.

Другое, что вы можете сделать, это установить таймаут в Camunda (я думаю) для его источника данных, хотя я не могу сказать, как это делается. Я думаю, что это довольно терпимо.

+0

Уже пробовал проверить действительные sql и background validadion в конфигурации standalone.xml. –

+0

Проблема при запуске. Появляется исключение «java.net.UnknownHostException: db» и подсистема источника данных не работает –

Смежные вопросы