Spring配置JNDI的解决方案

时间:2021-03-17 18:48:41

我的配置环境是:Spring + Tomcat + MySql

说明:

1. $TOMCAT_HOME代表Tomcat的安装目录。

第一步:在Tomcat的$TOMCAT_HOME/conf/context.xml文件中配置数据源。

<Resource
name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/TestDB"
username="root"
password="123456"
/>

参数说明:

name:JNDI的名称,下面Spring加载JNDI时会引用。

driverClassName:数据库驱动的类全名。

url:数据库连接的url。

username:数据库用户名。

password:数据库用户密码。

其余参数为连接优化参数,可自行Google查询。

第二步:把Mysql的驱动包拷贝到$TOMCAT_HOME/lib目录下。

第三步:让Spring加载JNDI配置,在Spring配置文件中加入如下配置:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/TestDB"/>
<property name="resourceRef" value="true"/>
</bean>

参数说明:

jndiName:第一步中所配置单独JNDI名称。

resourceRef:可以让我们指定jndiName时,省略前缀“java:comp/env/”。

注意:

1. 启动Tomcat容器测试应用是没有问题的,因为JNDI是配置在Tomcat容器中的,所以Junit测试会一直失败,如果哪位朋友有解决方案,可以告诉我下,谢谢!