我想测试一些内部Web应用程序中的新功能。此新代码使用通常由应用程序服务器(tomcat)提供的数据库连接。
我不想在本地计算机上重新创建整个Web应用程序以测试新代码,因为我只需要运行一个功能。
有谁知道我可以“欺骗”上下文或数据源来检索数据库配置,而无需在服务器上实际创建Web应用程序实例吗?
随着春天的帮助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_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>