Как я могу имитировать jndi поиск для источника данных без сервера приложений

Я хочу протестировать некоторую новую функциональность, которая является частью внутреннего веб-приложения. Этот новый код использует соединение с базой данных, обычно обеспеченное сервером приложений (кот).

Я не хочу воссоздавать все веб-приложение на своей локальной машине для тестирования нового кода, так как я только должен выполнить одну функцию.

Кто-либо знает, как я могу 'имитировать' Контекст или Источник данных, для получения конфигурации базы данных, на самом деле не создавая экземпляр веб-приложения на сервере?

7
задан Brian Tompsett - 汤莱恩 6 June 2015 в 20:30
поделиться

1 ответ

С помощью Spring SimpleNamingContextBuilder и Apache BasicDataSource вы можете сделать что-то вроде этого (у меня обычно это в статическом блоке в тестовых классах, которым нужен JNDI) :

BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(db_driver_name);
dataSource.setUrl(db_connection_url);
dataSource.setUsername(db_username);
dataSource.setPassword(db_password);
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
builder.bind(jndi_name, dataSource);
builder.activate();

Значение jndi_name может выглядеть так: java: comp / env / jdbc / my-db

После настройки код, который обычно ищет соединение с базой данных через JNDI должно работать.Приведенный выше код, например, будет работать с этой конфигурацией Spring:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName" value="java:comp/env/jdbc/my-db"/>
</bean>
4
ответ дан 7 December 2019 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: