Я хочу протестировать некоторую новую функциональность, которая является частью внутреннего веб-приложения. Этот новый код использует соединение с базой данных, обычно обеспеченное сервером приложений (кот).
Я не хочу воссоздавать все веб-приложение на своей локальной машине для тестирования нового кода, так как я только должен выполнить одну функцию.
Кто-либо знает, как я могу 'имитировать' Контекст или Источник данных, для получения конфигурации базы данных, на самом деле не создавая экземпляр веб-приложения на сервере?
С помощью 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>