如何绑定数据源?

时间:2015-05-15 14:30:31

标签: java spring jdbc jndi sqldatasource

我收到了错误 -

org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'netLogsDao': Injection of resource dependencies failed; nested 
exception is org.springframework.beans.factory.BeanCreationException: Error 
creating bean with name 'abcDataSource' defined in 
com.kinsale.submclrmgr.config.DataConfig: Bean instantiation via factory 
method failed; nested exception is 
org.springframework.beans.BeanInstantiationException: Failed to instantiate 
[javax.sql.DataSource]: Factory method 'abcDataSource' threw exception; 
nested exception is 
org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException: 
Failed to look up JNDI DataSource with name 'dataSource/abc'; nested 
exception is javax.naming.NameNotFoundException: Name [dataSource/abc] is 
not bound in this Context. Unable to find [dataSource].

我正在试图找出如何绑定我的数据源,但是我发现的文档没有帮助。有一个JndiTemplate,我可以用来绑定数据源,传递String name和Object对象的参数,但我找不到任何东西告诉我关于该对象的任何信息。

我绑定到数据源名称的对象是什么?它是我正在创建的Bean的名称还是context.xml中的资源名称?

这是Bean -

@Bean(name="abcDataSource")
public DataSource abcDataSource(){

JndiDataSourceLookup jndi = new JndiDataSourceLookup();
jndi.setResourceRef(true);

return jndi.getDataSource("dataSource/abc");

以下是bean的使用 -

@Resource(name="abcDataSource")
private DataSource ds;

这是context.xml条目(我有正确的用户名和密码) -

<Resource 
name="dataSource/abc" 
auth="Container"
type="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
factory="org.apache.naming.factory.BeanFactory"
URL="jdbc:mysql://abc/db_netlogs" />

1 个答案:

答案 0 :(得分:2)

为了使其工作,以下依赖关系需要在pom中。

    <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.17</version>
    </dependency>

一旦我补充说,一切正常。