Tomcat中配置mysql/oracle jndi数据库连接

2015/06/17 2099点热度 0人点赞 0条评论

开发使用的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" />

yxkong

这个人很懒,什么都没留下

文章评论