Не найден подходящий драйвер для jdbc:postgresql в WSO2ei

Я использую wso2ei и создал запланированное задание из углеродного приложения. Проблема, с которой я столкнулся, заключается в том, что после перезапуска wso2 это задание не может подключиться к локальной базе данных postgresql со следующей ошибкой:

TID: [-1] [] [2018-07-04 22:09:17,319] ERROR {org.wso2.carbon.ntask.core.impl.TaskQuartzJobAdapter} -  Error in executing task: null {org.wso2.carbon.ntask.core.impl.TaskQuartzJobAdapter}
java.lang.ExceptionInInitializerError
...
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
...
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling DriverManager#getConnection
...
Caused by: java.sql.SQLException: No suitable driver found for jdbc:postgresql://127.0.0.1:5432/dbanme

Я скопировал файл jar postgresql во все следующие каталоги (первый и последний копируются автоматически при перезапуске).

# find ./* -name 'postgresql*.jar'
./dropins/postgresql_42.1.4_1.0.0.jar
./lib/endorsed/postgresql-42.1.4.jar
./lib/postgresql-42.1.4.jar
./repository/axis2/client/lib/postgresql-42.1.4.jar
./repository/components/lib/postgresql-42.1.4.jar
./samples/axis2Client/lib/postgresql-42.1.4.jar
./wso2/broker/repository/lib/postgresql-42.1.4.jar
./wso2/components/plugins/postgresql-42.1.4.jar
./wso2/components/default/configuration/org.eclipse.osgi/bundles/619/1/.cp/postgresql-42.1.4.jar

Одна вещь, которая устраняет проблему, заключается в том, что когда вы входите в Home > Configure > Datasources, редактируете пользовательский источник данных, нажимаете Test connection, и все возвращается в нормальное состояние, и больше нет ошибок, соединения работают отовсюду.

Есть ли конкретное место, куда следует поместить файл jar?


person Altin Ukshini    schedule 04.07.2018    source источник
comment
Похоже на проблему с загрузкой класса. Вы создаете это соединение с базой данных из какого-то пользовательского кода?   -  person Bee    schedule 04.07.2018
comment
Да, соединения выполняются в приложении Carbon (планировщик), однако это также работает после того, как тестовое соединение запускается вручную в консоли администратора wso2, как описано выше.   -  person Altin Ukshini    schedule 04.07.2018
comment
Соединение выполняется внутри java-кода?   -  person Bee    schedule 04.07.2018
comment
Да все верно!   -  person Altin Ukshini    schedule 05.07.2018
comment
Можете ли вы поделиться кодом?   -  person Bee    schedule 05.07.2018
comment
@bee, не уверен, что это считается обходным путем, но проблема устранена путем создания начальной службы данных в Home > Manage > Services путем выбора фиктивного источника данных углерода, который подключается к фиктивной базе данных. Чтобы ответить на ваш вопрос, вот код: pastebin.com/zUFxP6gR   -  person Altin Ukshini    schedule 05.07.2018
comment
Попробуйте добавить это в свой код. Class.forName("your.jdbc.driver.class.name");   -  person Bee    schedule 05.07.2018
comment
@ Пчела, что именно ты имеешь в виду? В этом случае используется спящий режим!?   -  person Altin Ukshini    schedule 06.07.2018


Ответы (1)


Обычно при настройке источников данных WSO2 или разработке службы данных драйверы jdbc необходимо размещать только в папке /lib. При запуске сервера jar перепаковывается в пакет osgi и копируется в папку /dropins. Так что попробуйте удалить все джары, которые вы ставили ранее, и скопируйте нужный в папку lib и попробуйте запустить сервер.

person nicolo    schedule 04.07.2018
comment
Я знаю, я видел твой пост, но нужное место там. Ваша ошибка может быть связана с конфигурацией источника данных. Вы настроили тест на параметр заимствования? - person nicolo; 06.07.2018