如何使用tomcat配置数据源和多数据源
使用tomcat jndi配置数据源和多数据源先在tomact路径下找到conf文件夹下中的server.xml,context.xml两个xml文件。第一步:在tomcat的server.xml中Service下配置<Context path="jdbc/1" reloadable="true"></Context><Context path="jdbc/2" re
使用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区别:
-
先看server.xml文件host配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
-
appBase:这个目录下面的子目录将自动被部署为应用,且war文件将被自动解压缩并部署为应用,默认为tomcat下webapps目录,如果不想访问默认ROOT目录,修改这里,同理如果想访问配置目录下应用为默认应用,在此目录下新增ROOT目录文件夹。
-
我们也可以在host下配置虚拟目录
<Context path="" docBase="D:\WebContent" sessionCookiePath="/" sessionCookieName="JSESSIONID" />
-
docBase只是指向了你某个应用的目录,这个可以和appBase没有任何关系
如果你把他们弄重复了,也就是2个指向了一个目录,也能运行,但应用下面的每个子目录,其实是被部署为单独的应用的,这就是两者区别与联系。
-
- 我理解的appBase位置就是指,项目war包放的真实地址,例如:app/work.war为war包地址,那么appBase 就是
-
第三步: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(指定的数据源名称); } }
- 实现dataSource()方法
-
第六步:在application配置文件中加入指定的JNDI名称(指定的数据源名称),指定哪个数据源就会读取哪个数据源的配置。例:
spring.datasource.jndi-name=jdbc/1
-
完成。配置数据源的方法也有很多,我目前只用到了这种,分享出来。
更多推荐
所有评论(0)