开发使用的weblogic,使用的jndi数据源,不想改配置就学习了下在tomcat中配置jndi数据源
单个应用独享数据源
在Tomcat的conf/server.xml找到工程的Context节点,添加一个私有数据源
mysql版
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"
/>
oracle版
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数据源,应用到单个应用
找到Tomcat的conf/server.xml中GlobalNamingResources节点,在节点下加一个全局数据源
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
优点:重用性,可控性
缺点:配置相对第三种方法要繁琐一点,每个工程都得配
配置全局JNDI数据源,应用到所有Tomcat下部署的应用
找到Tomcat的conf/server.xml中GlobalNamingResources节点,在节点下加一个全局数据源
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配置文件的根节点就是
WEB-INF/web.xml
优点:重用性,一次性到位
缺点:没有可控性
两个服务器做数据库负载均衡时配置
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