在开发OA系统因为采用了spring+hibernate架构,其中数据源很多,采用jdbc注入到spring中,结果时间长了,数据库容易断开,改成了jndi,jndi由spring去管理
1、配置jndi文件
文件位置
%TOMCAT_HOME% \conf\Catalina\localhost
文件名
webapp工程的名字.xml。如:若工程名为jndidemo,则文件取名为jndidemo.xml。一般情况下该文件会存在。如果不存在可手动创建
文件内容应该有如下格式:
name="jdbc/jndidemo1"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
password="efnx"
maxIdle="2"
maxWait="5000"
username="efnx"
url="jdbc:oracle:thin:@(description=(address_list=(address=(protocol=TCP)(port=1521)(host=192.168.0.240)))(connect_data=(SERVER = DEDICATED)(SERVICE_NAME = )))"
maxActive="4"/>
根据具体需要修改相应内容。
2、Spring配置文件
在Spring配置文件中增加如下类似内容
java:comp/env/jdbc/jndidemo1
3、持久化配置文件
对持久化层进行依赖注入时,给dataSource属性注入jndiDataSource即可。如:
4、数据库驱动
最后别忘了将相应的数据库驱动拷贝到%TOMCAT_HOME%\common\lib下
注意事项:
根据tomcat版本不同,jndi配置文件的写法存在差异。现给出说明:
版本:4.x
这个版本的配置文件一般都写在%TOMCAT_HOME% \conf\server.xml文件中。因为现在基本都在用5.x版本,所以这里就不做详细说明了。
版本:5.0.xx
这个版本将context的内容独立了出来放到了%TOMCAT_HOME% \conf\Catalina\localhost下,且不同的工程生成相应的配置文件,但文件格式和4.x类似:如:
factory
mons.dbcp.BasicDataSourceFactory
driverClassName
com.microsoft.jdbc.sqlserver.SQLServerDriver
url
jdbc:microsoft:sqlserver://59.151.17.254:1500;DatabaseName=YeeYoo_DB
username
crm
password
crmyeeyoo
maxWait
-1
maxActive
10
版本5.5.xx
该版本中给配置文件格式作了较大改动,使其更加简洁。格式内容如下:
name="jdbc/jndidemo"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
password="efnx"
maxIdle="2"
maxWait="5000"
username="efnx"
url="jdbc:oracle:thin:@(description=(address_list=(address=(protocol=TCP)(port=1521)(host=192.168.0.240)))(connect_data=(SERVER = DEDICATED)(SERVICE_NAME = )))"
maxActive="4"/>
请根据不同版本编写相应格式的配置文件否则会出现各种各样不同的问题。