【问题标题】:NameNotFoundException while opening connection from Datasource, JNDI从数据源打开连接时出现 NameNotFoundException,JNDI
【发布时间】:2013-05-29 12:35:03
【问题描述】:

我有一个使用 JSF 的应用程序,我手动打开了连接,但现在我必须更改它并打开来自数据源的所有连接,所以我在目录中有一个 .xml 文件 (Jboss 7)

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema">
    <datasource
        jndi-name="java:jboss/datasources/MyForum"
        enabled="true"
        use-java-context="true"
        pool-name="MyForum">
            <connection-url>jdbc:hsqldb:hsql://localhost</connection-url>
            <driver>hsqldb.jar</driver>
            <pool></pool>
            <security>
                <user-name>sa</user-name>
                <password></password>
            </security>
    </datasource>
</datasources>

然后我有代码可以在“JdbcHelper”类中访问 JNDI 名称

public Connection createConnection() {

    try {
        String jndiKey = getProperty("JNDI_DATASOURCE");

        Context ctx = new InitialContext();
        DataSource ds = (DataSource) ctx.lookup(jndiKey);
        return ds.getConnection();

    } catch (NamingException e) {
        throw new RuntimeException("Can't open JDBC conection from JNDI", e);
    } catch (SQLException e) {
        throw new RuntimeException("Can't open JDBC conection", e);
    }
}

启动异常的行是 DataSource ds = (DataSource) ctx.lookup(jndiKey); 我不知道您是否需要更多信息,但如果您需要询问,我真的需要这样做,但我找不到解决方案 :(

更新,这里是异常的详细信息

datasources/MyForum -- service jboss.naming.context.java.jboss.datasources.MyForum

提前非常感谢您。 :)

【问题讨论】:

  • 检查您的 JBoss 服务器是否在没有警告/错误的情况下启动。然后,调试您的应用程序并检查jndiKey 的值是否为java:jboss/datasources/MyForum
  • 已经做到了,是的,这个值似乎是正确的。我已经更新了异常的详细信息,也许可以帮助您查看问题所在。还是谢谢你

标签: java jakarta-ee ejb jboss7.x jndi


【解决方案1】:

我的猜测是你没有正确初始化InitialContext, 也许这会对你有所帮助:Creating initial Context in JBoss AS 7.1.1

【讨论】:

  • 我就是这么想的,因为当我调试它时,我看到了很多“空值”。现在我正在吃午饭,我稍后再检查:D 谢谢! :3
猜你喜欢
  • 2012-08-07
  • 1970-01-01
  • 2012-07-16
  • 2012-03-08
  • 2015-06-11
  • 2023-04-04
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
相关资源
最近更新 更多