如何通过JNDI从JBoss中检索DataSource

时间:2011-09-15 12:38:55

标签: java jdbc jboss jndi

我要做的是从每个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时,我仍然坚持这一点。搜索网页只会增加我的困惑,因为我发现的所有内容都是分散的信息,我尝试通过反复试验来应用,但没有真正的进展。

谢谢

1 个答案:

答案 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