开发使用的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" />
文章评论