如何通过 JNDI 从 JBoss 检索数据源

Posted

技术标签:

【中文标题】如何通过 JNDI 从 JBoss 检索数据源【英文标题】:How to retrieve a DataSource from JBoss via JNDI 【发布时间】:2011-09-15 12:38:55 【问题描述】:

我要做的是根据 JNDI 从本地运行的 JBoss (EAP 5.1) 中检索数据源。 它在已部署的 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");

我得到了ClassNotFoundExceptionorg.jnp.interfaces.NamingContextFactory

作为 JNDI 和 JBoss 的新手,我被困在了这一点上。在网上搜索只会增加我的困惑,因为我发现的只是零散的信息,我试图通过反复试验来应用,没有真正的进展。

谢谢

【问题讨论】:

【参考方案1】:

您正在测试什么功能?是检索数据源还是一些实际的数据库代码?如果是后者,那么我建议根本不使用 JNDI 并使用本地 DataSource 实现。

这个帖子展示了如何使用 Commons DBCP 来设置本地数据源。

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

【讨论】:

我尝试测试一些 SQL 语句。本地 DS 方法更有意义。谢谢。

以上是关于如何通过 JNDI 从 JBoss 检索数据源的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 HikariCP 在 Jboss 中配置 JNDI 数据源?

Tomcat,Jboss,Weblogic通过jndi连接数据库

如何使用 Spring 测试模拟的 JNDI 数据源?

骆驼路由输入端点的 JBoss 嵌入式 MQ 的 jndi 查找问题

Jboss7.1 MDB - 本地 JNDI 参考与全球 JNDI 参考

MyEclipse+JBoss创建第一个EJB,部署并通过JNDI远程调用全过程