Tomcat中配置mysql/oracle jndi数据库连接
原创
©著作权归作者所有:来自51CTO博客作者yxkong的原创作品,请联系作者获取转载授权,否则将追究法律责任
开发使用的weblogic,使用的jndi数据源,不想改配置就学习了下在tomcat中配置jndi数据源
单个应用独享数据源
在Tomcat的conf/server.xml找到工程的Context节点,添加一个私有数据源
mysql版
<Context docBase="projectName" path="/projectName" reloadable="true" source="org.eclipse.jst.jee.server:projectName">
<Resource
name="db_mysql"
scope="Shareable"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
url="jdbc:mysql://127.0.0.1:3306/test"
driverClassName ="com.mysql.jdbc.Driver"
username="root"
password="123456"
/>
</Context>
oracle版
<Context docBase="projectName" path="/projectName" reloadable="true" >
<Resource driverClassName="oracle.jdbc.driver.OracleDriver"
maxActive="2"
maxIdle="1"
maxWait="5000"
name="db_oracle"
username="username"
password="123456"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.45)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=数据库的SID)))"
/>
</Context>
优点:简单
缺点:重用性差
配置全局JNDI数据源,应用到单个应用
找到Tomcat的conf/server.xml中GlobalNamingResources节点,在节点下加一个全局数据源
<Resource driverClassName="oracle.jdbc.driver.OracleDriver"
maxActive="2"
maxIdle="1"
maxWait="5000"
name="db_oracle"
username="username"
password="123456"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.45)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=数据库的SID)))"
/>
找到要应用此JNDI数据源的工程Context节点,增加对全局数据源的引用ResourceLink
<Context docBase="projectName" path="/projectName" reloadable="true">
<ResourceLink global="db_oracle" name="db_oracle" type="javax.sql.DataSource" />
</Context>
优点:重用性,可控性
缺点:配置相对第三种方法要繁琐一点,每个工程都得配
配置全局JNDI数据源,应用到所有Tomcat下部署的应用
找到Tomcat的conf/server.xml中GlobalNamingResources节点,在节点下加一个全局数据源
<Resource driverClassName="oracle.jdbc.driver.OracleDriver"
maxActive="2"
maxIdle="1"
maxWait="5000"
name="db_oracle"
username="username"
password="123456"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.45)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=数据库的SID)))"
/>
找到Tomcat的conf/context.xml,在Context节点下加一个ResourceLink节点对第一步配置的数据源进行引用
这个XML配置文件的根节点就是<Context>
<Context>
<ResourceLink global="db_oracle" name="db_oracle" type="javax.sql.DataSource" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Context>
优点:重用性,一次性到位
缺点:没有可控性
两个服务器做数据库负载均衡时配置
<Resource driverClassName="oracle.jdbc.driver.OracleDriver"
maxActive="2"
maxIdle="1"
maxWait="5000"
name="db_oracle"
username="username"
password="123456"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.46)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.45)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=数据库的SID)))" />
Spring对JNDI数据源的引用
在applicationContext.xml中加一个bean,替代原来的dataSource
<jee:jndi-lookup id="dataSource" jndi-name="db_oracle" />