openshift: сохранить источник данных mysql при перезапуске

Я боролся с моим веб-приложением (wsesupport) на Openshift с Wildfly 10 и MySQL 5.5. Каждый раз, когда я публиковал из eclipse (в представлении сервера щелкните правой кнопкой мыши wsesupport в Openshift), мой проект не был развернут, и в файлах журнала я мог найти сообщение об ошибке:

2016-03-10 17:32:56,740 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "ROOT.war")]) - failure description: {"WFLYCTL0180: Services with missing/unavailable dependencies" => [ "jboss.persistenceunit.\"ROOT.war#wsesupport\".__FIRST__PHASE__ is missing [jboss.naming.context.java.wsesupport]", "jboss.persistenceunit.\"ROOT.war#wsesupport\" is missing [jboss.naming.context.java.wsesupport]"

Я много раз повторно добавлял свой источник данных онлайн через консоль администратора myapp. Я сделал это через команду rhc port-forward wsesupport и потом в браузере localhost:9990. Я заметил, что после публикации запись, которую я делал в источниках данных Non XA, всегда исчезала.


person onderbewustzijn    schedule 10.03.2016    source источник


Ответы (1)


В Mac я искал ресурсы (cmd-shift-r) и искал standalone.xml. Я сделал это, потому что в прошлом я помнил, что могу развернуть файл standalone.xml с моим веб-приложением, и конфигурация будет добавлена ​​в конфигурацию Wildlfy по умолчанию (или что-то в этом роде). Так что я подумал попробовать, может быть, я не знал о таком файле в проекте...

Удивительно, но он нашел его в скрытой папке openshift. Если вы используете eclipse (наверняка) и плагин openshift, он сразу его найдет. Там я скопировал текущую конфигурацию MySqlDS следующим образом:

            <datasource jndi-name="java:/wsesupport" enabled="true"
                use-java-context="true" pool-name="wsesupport" use-ccm="true">
                <connection-url>jdbc:mysql://${env.OPENSHIFT_MYSQL_DB_HOST}:${env.OPENSHIFT_MYSQL_DB_PORT}/wsesupport
                </connection-url>
                <driver>mysql</driver>
                <security>
                    <user-name>${env.OPENSHIFT_MYSQL_DB_USERNAME}</user-name>
                    <password>${env.OPENSHIFT_MYSQL_DB_PASSWORD}</password>
                </security>
                <validation>
                    <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
                    <background-validation>true</background-validation>
                    <background-validation-millis>60000</background-validation-millis>
                    <!--<validate-on-match>true</validate-on-match> -->
                </validation>
                <pool>
                    <flush-strategy>IdleConnections</flush-strategy>
                </pool>
            </datasource>  

Затем я снова опубликовал свой проект, и он заработал!

PS не удаляйте ExampleDS! Очевидно, WildFly нуждается в этом!
PS2 не форматирует файл standalone.xml в Eclipse! Когда я это сделал, я получил эту странную ошибку: java.lang.IllegalStateException: You have to start the service first!

Удачи!

person onderbewustzijn    schedule 10.03.2016