我要做的是从每个JNDI的本地运行的JBoss(EAP 5.1)中检索一个DataSource。
它在部署的DAO中运行良好,但我似乎误解了一些事情,就像我试图在测试用例中获取DataSource一样,我在尝试时不断获得javax.naming.NoInitialContextException
Properties env = new Properties();
env.put(Context.PROVIDER_URL, "jnp://localhost:1099");
final InitialContext ic = new InitialContext(env);
ds = (DataSource) ic.lookup(DATASOURCE_NAME);
如果我添加
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
我为ClassNotFoundException
org.jnp.interfaces.NamingContextFactory
刚接触JNDI和JBoss时,我仍然坚持这一点。搜索网页只会增加我的困惑,因为我发现的所有内容都是分散的信息,我尝试通过反复试验来应用,但没有真正的进展。
谢谢
答案 0 :(得分:1)
您正在测试哪些功能?它是检索DataSource还是一些实际的数据库代码?如果是后者,那么我建议根本不使用JNDI并使用本地DataSource实现。
该主题展示了如何使用Commons DBCP来设置本地DataSource。
http://forum.springsource.org/showthread.php?16670-Problem-running-JUNIT-test-with-JNDI-datasource
如果您确实需要JNDI方面,此示例将演示如何使用最少的值填充InitialContext以获取DataSource。您可以使用与上面相同的Commons DBCP配置来配置您需要的DataSource。
http://blogs.oracle.com/randystuph/entry/injecting_jndi_datasources_for_junit