如何通过 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");
我得到了ClassNotFoundException
的org.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连接数据库
骆驼路由输入端点的 JBoss 嵌入式 MQ 的 jndi 查找问题