找不到dataSource,即使dataSource是在context.xml中定义的

时间:2015-05-13 18:46:26

标签: java mysql spring datasource

我为一个特定的dao方法声明了以下bean,以使用与项目其余部分不同的数据源。

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

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

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

这里是使用那个bean。

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

这里来自context.xml(省略了用户和密码,这些用户和密码已被验证为正确,如果它们错了,也会抛出不同的错误。)我也玩过这个在服务器的context.xml中,将它放在一个地方而不是另一个地方,并在两个地方都有它。

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

错误是名称未找到例外 -

Caused by: javax.naming.NameNotFoundException: Name [dataSource/kings] is 
not bound in this Context. Unable to find [dataSource].

那么,我的问题是 - 我该如何约束这个以及如何约束?

1 个答案:

答案 0 :(得分:1)

尝试在您的web.xml中添加resource-ref

<resource-ref>
    <res-ref-name>dataSource/kings</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>