资源注释没有获取JNDI

时间:2014-11-20 01:09:09

标签: java spring annotations jndi

阅读文档here,使用@Resource注释看起来相当简单,但我遗漏了一些东西。当我在bean中使用它时,JNDI当前正在工作,如下所示:

<bean id="identDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:/comp/env/jdbc/IdentCanada"/>
</bean>

<bean id="identJdbcTemplate"
      class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource">
        <ref bean="identDataSource"/>
    </property>
</bean>

...在context.xml中,条目如下:

<Resource name="jdbc/IdentCanada" auth="Container"
                   type="javax.sql.DataSource"
                   username="********" password="*******"
                   driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
                   url="jdbc:sqlserver://*********\dev;databaseName=******" 
                   factory="org.apache.commons.dbcp.BasicDataSourceFactory"
                   maxActive="50"
                   maxIdle="10">
        </Resource>

这一切都很好,但是当我尝试使用@Resource引入jdbc / IdentCanada时,它总是为空。我读到了关于实例化时间的基于字段的注入与类注入,但是当我实际使用DataSource对象时它仍然是null。我这样使用它:

public class CalendarEmailUtility {

@Resource(mappedName = "java:/comp/env/jdbc/IdentCanada")
private DataSource dataSource;

....
}

我是否遗漏了与JNDIObjectFactory有关的内容?

0 个答案:

没有答案