如何使用Spring的jee标签引用JNDI的数据源

时间:2014-07-11 20:00:36

标签: spring-mvc jndi geronimo

我在我的Geronimo服务器中定义了一个名为LocalMysql的数据源。我可以使用Geronimo管理控制台查询数据库,并获取数据,所以我知道它至少在应用程序服务器上正确配置。

我的下一步是在Eclipse中创建一个Spring MVC项目。除了模板生成的代码之外,我在servlet-context.xml中添加了以下行。

在“beans”声明中:

<beans ... xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="...
                    http://www.springframework.org/schema/jee 
                    http://www.springframework.org/schema/jee/spring-jee.xsd"

然后,在文件正文中添加:

<jee:jndi-lookup id="mysqlDatasource" jndi-name="LocalMysql"/>

我还需要做什么连接?

使用更新编辑

除了下面web.xml中列出的标记外,我还将以下内容添加到geronimo-web.xml中:

<dep:dependency>
  <dep:groupId>console.dbpool</dep:groupId>
  <dep:artifactId>LocalMysql</dep:artifactId>
  <dep:version>1.0</dep:version>
  <dep:type>car</dep:type>
</dep:dependency>

以及:

<name:resource-ref>
  <name:ref-name>LocalMysql</name:ref-name>
  <name:resource-link/>
</name:resource-ref>

即使添加了这些内容,我仍然会遇到以下异常:

Unable to resolve resource reference 'java:comp/env/LocalMysql' 
(Could not find resource ''.  Perhaps it has not yet been configured, 
or your application does not have a dependency declared for that 
resource module?

1 个答案:

答案 0 :(得分:0)

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/yourresource"
        expected-type="javax.sql.DataSource" resource-ref="true" />

web.xml中的引用:

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