У меня есть код, который вызывает OracleUcpConnectionManager.getConnection("some_resource_name")
в тесте, который не работает с SQLException
, который говорит: Invalid Universal Connection Pool configuration
. Я проверил, и этот же код вызывается в производстве, и он работает. Имя ресурса (строка, передаваемая в .getConnection
, одинаково как для тестового, так и для рабочего кода. Я предполагаю, что это должна быть какая-то конфигурация, которая происходит автоматически через Spring, поэтому я отсортировал файлы XML в WEB-INF
и попытался добавить это к тесту:
//manually scan the application context (this is done with XML configuration in the normal application)
//thanks: http://static.springsource.org/spring/docs/3.1.0.RC1/spring-framework-reference/htmlsingle/spring-framework-reference.html#beans-java-instantiating-container-scan
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("some.package.here");
context.refresh();
На основании этого в моем dispacther-servlet.xml:
<context:component-scan base-package="some.package.here" />
Примечание: префикс context:
здесь определен как xmlns:context="http://www.springframework.org/schema/context"
Это не имело (заметного) эффекта.
Я также просматривал сайт оракула в течение нескольких дней и не нашел много связанных с этой ошибкой (кстати, код ошибки UCP-45006
( см .: коды ошибок на оракуле) сайт ), и поиск, который меня не особо заинтересовал)
Я также подумал, что этот вопрос может быть полезен: OracleDataSource против Oracle UCP PoolDataSource , однако у меня нет какой-либо из этой конфигурации в моих файлах .xml
или .properties
в настоящее время (это существующий проект) и (как уже отмечалось) .getConnection(String)
отлично работает при запуске кода в рабочей среде, но не при выполнении в качестве теста JUnit.
Есть ли что-то, что я должен искать в журналах? Я не уверен, что попробовать дальше.
Обновление : сбой в oracle.ucp.jdbc.PoolDataSourceImpl.setConnectionFactoryClassName (который вызывает SQLExcpetion) И (бонус здесь), я обнаружил javadocs для этого .
Обновление Обновление : наш файл свойств, который имеет значение, необходимое для 'setConnectionFactoryClassName', загружается в обычном проекте, но не при тестировании. После небольшого поиска кажется, что он загружается автоматически, после того, как мы передадим JVM этот аргумент: -DapplicationProperties="C:\full\path\to\our\file.properties"
. Теперь, чтобы выяснить, справится ли Spring с этим или с Java ...
Обновление Обновление Обновление : я могу убедиться, что местоположение файла свойств передается в тест, ( благодаря этому вопросу SO )