一尘不染

在没有应用服务器的情况下如何欺骗jndi查找数据源

java

我想测试一些内部Web应用程序中的新功能。此新代码使用通常由应用程序服务器(tomcat)提供的数据库连接。

我不想在本地计算机上重新创建整个Web应用程序以测试新代码,因为我只需要运行一个功能。

有谁知道我可以“欺骗”上下文或数据源来检索数据库配置,而无需在服务器上实际创建Web应用程序实例吗?


阅读 185

收藏
2020-12-03

共1个答案

一尘不染

随着春天的帮助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>
2020-12-03