Невозможно создать ошибку PoolableConnectionFactory при запуске приложения в Bluemix

1

После развертывания моего приложения Java в IBM Bluemix он не может создать исходное соединение с базой данных из-за этой ошибки:

Создание нового Hibernate SessionFactory 2015-04-11 14:24:04 [main] ОШИБКА ohutil.JDBCExceptionReporter - Не удается создать PoolableConnectionFactory (Ошибка связи связи Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил никаких пакетов от сервер.)

Я попытался установить "hibernate.current_session_context_class" в "thread" (который решил проблему при развертывании того же приложения в Google Application Engine), но это не помогло с профилем Websphere Liberty:

<prop key="hibernate.current_session_context_class" >
        thread
 </prop>

Есть идеи?

ОБНОВЛЕНИЕ 1 --- Это основная причина. Bluemix предлагает сервис ClearDB MySQL, но его конвейер не может подключиться к нему :(

Создание нового Hibernate SessionFactory 2015-04-11 15:04:49 [main] ОШИБКА ohutil.JDBCExceptionReporter - Ошибка связи связи

Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил никаких пакетов с сервера.

ОБНОВЛЕНИЕ 2 --- Даже экспериментальная база данных MySQL также не работает, если есть попытка подключения от конвейерных машин:

ohutil.JDBCExceptionReporter - Не удается создать PoolableConnectionFactory (сбой связи

Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил никаких пакетов с сервера.) Org.hibernate.exception.GenericJDBCException: Не удается открыть соединение на org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) на org.hibe на org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) на org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) Вызвано: org.apache.commons.dbcp.SQLNestedException: Can not создать PoolableConnectionFactory (сбой связи

Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил никаких пакетов с сервера.) На org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) на org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) на org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) в org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81) в org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java: 446)... 40 more Причиняется: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой связи

Пожалуйста, дайте мне знать, если у вас есть идеи.

  • 1
    Не уверен, что вы подразумеваете под "его конвейер не может подключиться к нему". Вы говорите о конвейерах сборки / тестирования / развертывания DevOps? Была ли конкретная часть трубопровода, где вы видели эту проблему?
  • 0
    Самый первый шаг конвейера (Build Stage) запускает модульные тесты, которые пытаются подключиться к базе данных MySQL, размещенной вне Bluemix (то есть ClearDB). Если я пытаюсь выполнить развертывание напрямую с помощью «cf push», приложение даже не запускается из-за наличия «spring-core.jar», и это вызывает ошибку: javax.servlet.ServletContainerInitializer: Provider org.cloudfoundry.reconfiguration.spring Не удалось создать экземпляр .AutoReconfigurationServletContainerInitializer .. Причина: java.lang.NoClassDefFoundError: org.springframework.context.ApplicationContextInitializer. Слишком много вопросов ..
Показать ещё 1 комментарий
Теги:
hibernate
ibm-cloud

1 ответ

2
Лучший ответ

Ах хорошо. Так что это происходит, потому что Liberty buildpack автоматически подключается к JDBC-соединениям во время развертывания в Bluemix. Для модульных тестов вам необходимо будет предоставить эту информацию о подключении к вашему приложению.

  • 0
    Проблема в том, что для этого упражнения (академического исследования) я должен использовать базу данных MySQL, и, как мы знаем, в Bluemix atm у нас есть Experimental MySQL и ClearDB MySQL (размещенные вне инфраструктуры Bluemix), когда я размещал этот вопрос, я пытался чтобы запустить модульные тесты через конвейер для соединения с ClearDB, так что я думаю, что конвейерные машины закрыты для любых внешних коммуникаций, которые в этом случае заблокировали меня. Поэтому я решил использовать MySQL от IBM, создал приложение PHP исключительно для использования PHPMyAdmin для настройки моей БД. На данный момент я действительно хотел, чтобы «Стадия развертывания» распознала мой .war артефакт.
  • 2
    ClearDB размещен в общедоступном Интернете. Вы можете получить к нему доступ с вашего локального компьютера. Войдите в Bluemix и нажмите на свое приложение. Вы увидите окно для ClearDB. Там будет кнопка с надписью «Показать учетные данные». Нажмите на это, и вы можете получить информацию о вашем соединении. Также ознакомьтесь с этим сообщением stackoverflow.com/questions/29550468/… о том, как это сделать из командной строки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню