如何使用Tomcat提供的JNDI数据源?

在有关DriverManagerDataSource类的Spring javadoc文章中,该类非常简单,建议使用

使用容器提供的JNDI数据源。这样DataSource可以通过DataSourceSpring ApplicationContext中的bean 形式公开。JndiObjectFactoryBean

问题是:我该如何完成?

例如,如果我希望让DataSourcebean访问我的自定义MySQL数据库,那我需要什么?我应该在上下文配置等中写些什么?

回答:

如果使用基于Spring XML架构的配置,请在Spring上下文中进行如下设置:

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd">

...

<jee:jndi-lookup id="dbDataSource"

jndi-name="jdbc/DatabaseName"

expected-type="javax.sql.DataSource" />

或者,使用以下简单的bean配置进行设置:

<bean id="DatabaseName" class="org.springframework.jndi.JndiObjectFactoryBean">

<property name="jndiName" value="java:comp/env/jdbc/DatabaseName"/>

</bean>

你可以使用以下内容在tomcat的server.xml中声明JNDI资源:

<GlobalNamingResources>

<Resource name="jdbc/DatabaseName"

auth="Container"

type="javax.sql.DataSource"

username="dbUser"

password="dbPassword"

url="jdbc:postgresql://localhost/dbname"

driverClassName="org.postgresql.Driver"

initialSize="20"

maxWaitMillis="15000"

maxTotal="75"

maxIdle="20"

maxAge="7200000"

testOnBorrow="true"

validationQuery="select 1"

/>

</GlobalNamingResources>

并从Tomcat的web context.xml中引用JNDI资源,如下所示:

  <ResourceLink name="jdbc/DatabaseName"

global="jdbc/DatabaseName"

type="javax.sql.DataSource"/>

以上是 如何使用Tomcat提供的JNDI数据源? 的全部内容, 来源链接: utcz.com/qa/414388.html

回到顶部