2012-08-10 46 views
0

我正在使用JBoss 4.3.0。我正在尝试在服务器中创建一个连接到MS SQL服务器的数据源。当通过JNDI连接到数据库时,Jboss中的NameNotFoundException

我创建了一个文件的myapp-MSSQL-ds.xml中并把它放在里面C:\的jboss-4.3.0 \服务器\安装MyApps \部署目录。

以下是该文件的内容:

<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没有绑定

我错过了什么吗?我是否需要在其他地方进行其他输入?

+0

你看过你的服务器启动日志吗?服务器能否成功创建数据源?日志中显示的数据源的名称是什么? – 2012-08-10 12:05:18

回答

1

的JDBC数据源的JNDI名称被绑定相对于java:/上下文(see the docs here),所以你只需要改变String url = "jdbc/MyDatasource"String url = "java:jdbc/MyDatasource"

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

相关问题