使用tomcat jndi配置数据源和多数据源

  • 先在tomact路径下找到conf文件夹下中的server.xml,context.xml两个xml文件。在这里插入图片描述

  • 第一步:在tomcat的server.xml中Service下配置

    • <Context path="jdbc/1" reloadable="true"></Context>
      <Context path="jdbc/2" reloadable="true"></Context>
      注意path的值需要和第三步中Resource下的name保持一致。
      在这里插入图片描述
    • jdbc/1和jdbc/2是两个不同的数据源
  • 第二步:在tomcat的server.xml中Host下指定appBase 在这里插入图片描述

    • 我理解的appBase位置就是指,项目war包放的真实地址,例如:app/work.war为war包地址,那么appBase 就是 appBase = "app/"
    • 也可以在第一步时多指定一个"docBase",例:
      • <Context path="jdbc/1" docBase="webapps/" reloadable="true"></Context>
        <Context path="jdbc/2" docBase="webapps/" reloadable="true"></Context>
      • 这样就不需要在appBase下指定了。
      • docBase和appBase区别:
        1. 先看server.xml文件host配置
          <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

        2. appBase:这个目录下面的子目录将自动被部署为应用,且war文件将被自动解压缩并部署为应用,默认为tomcat下webapps目录,如果不想访问默认ROOT目录,修改这里,同理如果想访问配置目录下应用为默认应用,在此目录下新增ROOT目录文件夹。

        3. 我们也可以在host下配置虚拟目录
          <Context path="" docBase="D:\WebContent" sessionCookiePath="/" sessionCookieName="JSESSIONID" />

        4. docBase只是指向了你某个应用的目录,这个可以和appBase没有任何关系
          如果你把他们弄重复了,也就是2个指向了一个目录,也能运行,但应用下面的每个子目录,其实是被部署为单独的应用的,这就是两者区别与联系。

        5. 参考链接:tomcat 目录配置 appBase和docBase 简介

  • 第三步:context.xml文件下增加Resource,指定多个Resource节点里面配置好数据连接的配置
    其中name要和server.xml中Context下的path一致
    在这里插入图片描述

	<Context>
		<WatchedResource>WEB-INF/web.xml</WatchedResource>
		<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
		<Resource name="jdbc/1"      
			auth="Container"  
			type="javax.sql.DataSource"  
			driverClassName="com.mysql.jdbc.Driver"  
			url="jdbc:mysql://127.0.0.1:3306/aaa"  
			username=""  
			password=""  
			maxActive="500"  
			maxIdle="500"  
			maxWait="36000"  
			/> 
		<Resource name="jdbc/2"      
			auth="Container"  
			type="javax.sql.DataSource"  
			driverClassName="com.mysql.jdbc.Driver"  
			url="jdbc:mysql://127.0.0.1:3306/bbb"  
			username=""  
			password=""  
			maxActive="30"  
			maxIdle="20"  
			maxWait="36000"/>
	</Context>
  • 第四步: 接着在tomcat的lib文件夹中加入数据库链接驱动。

  • 第五步:在项目中配置dataSource()

    • 实现dataSource()方法
      	@Configuration
      	public class DataSourceConfig {
      		/**
      		* 采用JNDI方式配置数据库
      		*/
      		@Bean
      		public DataSource dataSource() {
       			return new JndiDataSourceLookup().getDataSource(指定的数据源名称);
      		}
      	}
      
  • 第六步:在application配置文件中加入指定的JNDI名称(指定的数据源名称),指定哪个数据源就会读取哪个数据源的配置。例:spring.datasource.jndi-name=jdbc/1

  • 完成。配置数据源的方法也有很多,我目前只用到了这种,分享出来。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐