что приводит к сбою OracleUcpConnectionManager.getConnection ("some_resource_name")? - PullRequest
2 голосов
/ 19 декабря 2011

У меня есть код, который вызывает 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 )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...