0%

Tomcat 配置 Web 应用位置:从默认到自定义部署

Tomcat 作为主流的 Java Web 服务器,提供了灵活的 Web 应用部署方式。默认情况下,Tomcat 会自动加载webapps目录下的应用,但实际开发中常需要将应用部署到自定义路径。本文详细讲解 Tomcat 应用部署的默认机制、自定义配置方法及优先级规则,帮助灵活管理 Web 应用。

默认部署:依赖webapps目录

Tomcat 默认将webapps目录作为应用部署的根目录,其核心配置在conf/server.xmlHost标签中:

1
2
3
4
<Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 其他配置... -->
</Host>

关键参数说明

  • appBase:指定应用部署的基础目录(默认webapps),可以是相对路径(相对于 Tomcat 安装目录)或绝对路径(如/data/webapps);
  • unpackWARs="true":自动解压webapps目录下的 WAR 包(解压后生成同名文件夹);
  • autoDeploy="true":Tomcat 运行时,若webapps目录新增 WAR 包或应用,会自动部署无需重启。

默认部署的特点

  • 无需额外配置,将 WAR 包或应用文件夹放入webapps即可访问;
  • 访问路径规则:
    • 应用文件夹名为myapp → 访问路径http://localhost:8080/myapp
    • 应用文件夹名为ROOT → 访问路径http://localhost:8080(默认应用)。

自定义部署:通过Context配置指定路径

若需将应用部署到webapps以外的路径(如/data/projects/myapp),需通过Context标签手动配置,核心参数如下:

阅读全文 »

Mycat配置文件

Mycat简介中有提到Mycat有三个重要的配置文件schema.xmlserver.xmlrule.xml ,还有一些其他的依赖配置文件,接下来就分别介绍一下

server.xml配置文件

定义Mycat用户以及系统相关变量,如用户名、密码、端口等

两个重要的标签为user标签和system标签

user标签

主要用于定义登录Mycat的用户和权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!-- 用户 name表示用户名-->
<user name="mycat" defaultAccount="true">

<property name="password">123456</property>
<!-- 该用户可以访问的schema -->
<property name="schemas">TESTDB,db1,db2</property>
<property name="defaultSchema">TESTDB</property>
<!-- 是否只读 -->
<property name="readOnly">true</property>
<!-- benchmark用于现在整体连接数量,如果为0或不设置则表示不限制 -->
<property name="benchmark">1000</property>
<!-- 是否使用密码加密功能,默认为0
加密命令为java -cp Mycat-server-1.6.7.4-release.jar org.opencloudb.util.DecryptUtil 0:user:password
-->
<property name="usingDecrypt">1000</property>
<!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->

<!-- 表级 DML 权限设置 -->
<!--
<privileges check="false">
<schema name="TESTDB" dml="0110" >
<table name="tb01" dml="0000"></table>
<table name="tb02" dml="1111"></table>
</schema>
</privileges>
-->
</user>
阅读全文 »

Mycat简介

Mycat是一款数据库中间件,一端连数据库,一端连java应用,可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据,用于解决以下问题

  • java与数据库紧耦合
  • 高访问量、高并发对数据库压力
  • 读写请求数据不一致

可以用来做 读写分离数据分片多数据源整合

Mycat的原理就是拦截用户发送的SQL语句,对SQL语句做特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL语句发送到真实数据库,并将返回的结果做适当的处理,最终再返回给用户

属于中间件代理,偏运维

阅读全文 »

Spring 双数据源配置与动态切换全指南

在企业级开发中,双数据源(或多数据源)是常见需求,例如 “主业务数据存库 A,特殊业务数据存库 B”。Spring 提供了 AbstractRoutingDataSource 抽象类实现数据源动态路由,配合 AOP 可实现 “注解式切换数据源”。从 “数据源配置→动态路由→AOP 切换→事务注意事项” 四个维度,详解双数据源的实现原理与最佳实践。

双数据源核心原理

AbstractRoutingDataSource

Spring 动态数据源的核心是 AbstractRoutingDataSource(抽象路由数据源),其工作流程如下:

  1. 维护数据源映射:内部通过 targetDataSources 存储 “数据源 Key → 数据源实例” 的映射,通过 defaultTargetDataSource 指定默认数据源;
  2. 动态路由:当执行数据库操作时,调用 determineCurrentLookupKey() 方法获取当前数据源 Key;
  3. 获取数据源:根据 Key 从 targetDataSources 中匹配对应的数据源,若无匹配则使用默认数据源。

简单来说,AbstractRoutingDataSource 相当于一个 “数据源路由器”,通过 Key 决定当前使用哪个数据源。

双数据源配置步骤(XML 方式)

以 Druid 连接池为例,完整配置包括 “基础数据源配置→动态数据源配置→连接池与事务配置”。

1. 步骤 1:引入依赖(Maven)

需引入 Druid 连接池、Spring JDBC、事务、AOP 相关依赖:

阅读全文 »

Spring Cloud Config 远程配置获取流程:客户端与服务端交互详解

Spring Cloud Config 的核心能力是实现配置的远程管理与分发,其底层通过客户端主动拉取服务端按需提供的方式完成配置交互。本文从客户端和服务端两方面,结合源码解析远程配置的获取全流程。

客户端(Config Client)获取远程配置的流程

客户端获取远程配置的核心是 PropertySourceLocator 接口,其实现类 ConfigServicePropertySourceLocator 负责与服务端通信并拉取配置。

核心接口:PropertySourceLocator

PropertySourceLocator 是 Spring Cloud 定义的配置源定位接口,用于从远程(如 Config Server)或本地加载配置,核心方法为 locate

1
2
3
4
public interface PropertySourceLocator {
// 定位并返回配置源(PropertySource)
PropertySource<?> locate(Environment environment);
}

Spring Cloud Config 客户端通过 ConfigServicePropertySourceLocator 实现该接口,完成远程配置拉取。

客户端拉取配置的触发时机

客户端配置拉取发生在 Spring Boot 启动的早期阶段( Bootstrap 阶段),由以下组件协同触发:

(1)Bootstrap 上下文初始化

Spring Cloud 会创建一个独立的 Bootstrap Context( Bootstrap 上下文),作为应用主上下文的父上下文,专门用于加载远程配置。其初始化由 BootstrapApplicationListener 监听器触发:

阅读全文 »