通过JNDI连接到数据库时Jboss中的NameNotFoundException

时间:2012-08-10 12:01:00

标签: java jdbc jboss datasource jndi

我正在使用JBoss 4.3.0。我正在尝试在服务器中创建一个数据源以连接到MS SQL服务器。

我创建了一个文件 myapp-mssql-ds.xml ,并将其放在 C:\ jboss-4.3.0 \ server \ myapps \ deploy 目录中。

以下是文件的内容:

   <datasources>
  <local-tx-datasource>
<jndi-name>jdbc/MyDatasource</jndi-name>
    <connection-url>jdbc:jtds:sqlserver://urlhere</connection-url>

<driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
<user-name>myuser</user-name>
<password>mypassword</password>


<min-pool-size>2</min-pool-size>
    <max-pool-size>70</max-pool-size>
    <blocking-timeout-millis>5000</blocking-timeout-millis>
    <idle-timeout-minutes>15</idle-timeout-minutes>

 </local-tx-datasource>
  </datasources>

在Java代码中我按以下方式访问它

     DataSource dataSource;
     DAOFactory instance = null;

    String url ="jdbc/MyDatasource";
    try {
        dataSource = (DataSource) new InitialContext().lookup(url);
    } catch (NamingException e) {
        throw new DAOConfigurationException(
            "DataSource '" + url + "' is missing in JNDI.", e);
    }

      instance = new DataSourceDAOFactory(dataSource);

最后,我得到了这个例外,

  

javax.naming.NameNotFoundException:MyDatasource未绑定

我错过了什么吗?我是否必须在其他地方制作任何其他条目?

1 个答案:

答案 0 :(得分:1)

JDBC数据源的JNDI名称相对于java:/上下文(see the docs here)绑定,因此您只需将String url = "jdbc/MyDatasource"更改为String url = "java:jdbc/MyDatasource"

或者,您可以将use-java-context属性设置为false来配置数据源,而无需担心JNDI名称前缀为java: