From 2765f3f26563895e48d99045ade37cc83034bcc4 Mon Sep 17 00:00:00 2001 From: zhangjf Date: Thu, 19 Feb 2026 21:11:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9C=AC=E5=9C=B0=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E9=85=8D=E7=BD=AE=E5=A4=9A=E7=A7=9F=E6=88=B7?= =?UTF-8?q?=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:fund-gateway 和 fund-sys 的 application.yml 缺少 tenant.routing 配置 修改内容: 1. fund-sys/application.yml - 添加 tenant.routing 配置 - 配置 VIP 租户列表 (TENANT_VIP_001, TENANT_VIP_002) - 配置共享服务列表 2. fund-gateway/application.yml - 添加 Nacos 服务发现配置 - 路由改为 lb:// 协议使用负载均衡 - 添加全局跨域配置 - 添加 tenant.routing 配置 - 添加负载均衡日志级别 --- .../TenantAwareLoadBalancerTest.class | Bin 6450 -> 6446 bytes .../src/main/resources/application.yml | 71 +++++++++++++++--- fund-gateway/target/classes/application.yml | 71 +++++++++++++++--- fund-sys/src/main/resources/application.yml | 19 +++++ fund-sys/target/classes/application.yml | 19 +++++ logs/fund-sys-shared-8100.log | 36 +++++++++ logs/fund-sys-tenant-vip001-8101.log | 36 +++++++++ logs/fund-sys/error.log | 64 ++++++++++++++++ logs/fund-sys/info.log | 8 ++ 9 files changed, 306 insertions(+), 18 deletions(-) diff --git a/fund-common/target/test-classes/com/fundplatform/common/loadbalancer/TenantAwareLoadBalancerTest.class b/fund-common/target/test-classes/com/fundplatform/common/loadbalancer/TenantAwareLoadBalancerTest.class index 89c61e265fac03f6ee6568c660f88e75a5ec1cd2..45260cce43ce66e6ef47ca1d0f13419ac8de9b4e 100644 GIT binary patch literal 6446 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 b%TMv_FO>Zi|G+=-FG|GZ|2O`Nr%>}WWAoZx literal 6450 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 diff --git a/fund-gateway/src/main/resources/application.yml b/fund-gateway/src/main/resources/application.yml index 3b1c997..cee858a 100644 --- a/fund-gateway/src/main/resources/application.yml +++ b/fund-gateway/src/main/resources/application.yml @@ -17,6 +17,15 @@ spring: compatibility-verifier: enabled: false + # Nacos 服务发现 + nacos: + discovery: + server-addr: localhost:8848 + namespace: fund-platform + group: DEFAULT_GROUP + username: nacos + password: nacos + # Sentinel配置 sentinel: transport: @@ -24,6 +33,12 @@ spring: port: 8719 # Sentinel客户端端口 eager: true # 服务启动时立即初始化 + # 负载均衡配置 + loadbalancer: + enabled: true + cache: + enabled: false # 开发环境禁用缓存便于调试 + gateway: # 默认限流配置 default-filters: @@ -33,10 +48,20 @@ spring: redis-rate-limiter.burstCapacity: 200 # 令牌桶最大容量 key-resolver: "#{@ipKeyResolver}" + # 全局跨域配置 + globalcors: + cors-configurations: + '[/**]': + allowedOriginPatterns: "*" + allowedMethods: "*" + allowedHeaders: "*" + allowCredentials: true + maxAge: 3600 + routes: - # 系统管理服务 + # 系统管理服务 (使用负载均衡) - id: fund-sys - uri: http://localhost:8100 + uri: lb://fund-sys predicates: - Path=/sys/** filters: @@ -44,7 +69,7 @@ spring: # 客户管理服务 - id: fund-cust - uri: http://localhost:8200 + uri: lb://fund-cust predicates: - Path=/cust/** filters: @@ -52,7 +77,7 @@ spring: # 项目管理服务 - id: fund-proj - uri: http://localhost:8120 + uri: lb://fund-proj predicates: - Path=/proj/** filters: @@ -60,7 +85,7 @@ spring: # 用款申请服务 - id: fund-req - uri: http://localhost:8800 + uri: lb://fund-req predicates: - Path=/req/** filters: @@ -68,7 +93,7 @@ spring: # 支出管理服务 - id: fund-exp - uri: http://localhost:8140 + uri: lb://fund-exp predicates: - Path=/exp/** filters: @@ -76,7 +101,7 @@ spring: # 收款管理服务 - id: fund-receipt - uri: http://localhost:8150 + uri: lb://fund-receipt predicates: - Path=/receipt/** filters: @@ -84,7 +109,7 @@ spring: # 报表服务 - id: fund-report - uri: http://localhost:8700 + uri: lb://fund-report predicates: - Path=/report/** filters: @@ -92,7 +117,7 @@ spring: # 文件服务 - id: fund-file - uri: http://localhost:8600 + uri: lb://fund-file predicates: - Path=/file/** filters: @@ -101,3 +126,31 @@ spring: logging: level: org.springframework.cloud.gateway: DEBUG + com.fundplatform.common.loadbalancer: DEBUG + +# 多租户路由配置 +tenant: + routing: + enabled: true + tenant-header: X-Tenant-Id + tenant-group-header: X-Tenant-Group + group-separator: TENANT_ + default-tenant-id: "1" + shared-services: + - fund-gateway + - fund-report + - fund-file + services: + fund-sys: + vip-tenants: + - TENANT_VIP_001 + - TENANT_VIP_002 + fallback-to-shared: true + fund-cust: + vip-tenants: + - TENANT_VIP_001 + fallback-to-shared: true + fund-proj: + vip-tenants: + - TENANT_VIP_001 + fallback-to-shared: true diff --git a/fund-gateway/target/classes/application.yml b/fund-gateway/target/classes/application.yml index 3b1c997..cee858a 100644 --- a/fund-gateway/target/classes/application.yml +++ b/fund-gateway/target/classes/application.yml @@ -17,6 +17,15 @@ spring: compatibility-verifier: enabled: false + # Nacos 服务发现 + nacos: + discovery: + server-addr: localhost:8848 + namespace: fund-platform + group: DEFAULT_GROUP + username: nacos + password: nacos + # Sentinel配置 sentinel: transport: @@ -24,6 +33,12 @@ spring: port: 8719 # Sentinel客户端端口 eager: true # 服务启动时立即初始化 + # 负载均衡配置 + loadbalancer: + enabled: true + cache: + enabled: false # 开发环境禁用缓存便于调试 + gateway: # 默认限流配置 default-filters: @@ -33,10 +48,20 @@ spring: redis-rate-limiter.burstCapacity: 200 # 令牌桶最大容量 key-resolver: "#{@ipKeyResolver}" + # 全局跨域配置 + globalcors: + cors-configurations: + '[/**]': + allowedOriginPatterns: "*" + allowedMethods: "*" + allowedHeaders: "*" + allowCredentials: true + maxAge: 3600 + routes: - # 系统管理服务 + # 系统管理服务 (使用负载均衡) - id: fund-sys - uri: http://localhost:8100 + uri: lb://fund-sys predicates: - Path=/sys/** filters: @@ -44,7 +69,7 @@ spring: # 客户管理服务 - id: fund-cust - uri: http://localhost:8200 + uri: lb://fund-cust predicates: - Path=/cust/** filters: @@ -52,7 +77,7 @@ spring: # 项目管理服务 - id: fund-proj - uri: http://localhost:8120 + uri: lb://fund-proj predicates: - Path=/proj/** filters: @@ -60,7 +85,7 @@ spring: # 用款申请服务 - id: fund-req - uri: http://localhost:8800 + uri: lb://fund-req predicates: - Path=/req/** filters: @@ -68,7 +93,7 @@ spring: # 支出管理服务 - id: fund-exp - uri: http://localhost:8140 + uri: lb://fund-exp predicates: - Path=/exp/** filters: @@ -76,7 +101,7 @@ spring: # 收款管理服务 - id: fund-receipt - uri: http://localhost:8150 + uri: lb://fund-receipt predicates: - Path=/receipt/** filters: @@ -84,7 +109,7 @@ spring: # 报表服务 - id: fund-report - uri: http://localhost:8700 + uri: lb://fund-report predicates: - Path=/report/** filters: @@ -92,7 +117,7 @@ spring: # 文件服务 - id: fund-file - uri: http://localhost:8600 + uri: lb://fund-file predicates: - Path=/file/** filters: @@ -101,3 +126,31 @@ spring: logging: level: org.springframework.cloud.gateway: DEBUG + com.fundplatform.common.loadbalancer: DEBUG + +# 多租户路由配置 +tenant: + routing: + enabled: true + tenant-header: X-Tenant-Id + tenant-group-header: X-Tenant-Group + group-separator: TENANT_ + default-tenant-id: "1" + shared-services: + - fund-gateway + - fund-report + - fund-file + services: + fund-sys: + vip-tenants: + - TENANT_VIP_001 + - TENANT_VIP_002 + fallback-to-shared: true + fund-cust: + vip-tenants: + - TENANT_VIP_001 + fallback-to-shared: true + fund-proj: + vip-tenants: + - TENANT_VIP_001 + fallback-to-shared: true diff --git a/fund-sys/src/main/resources/application.yml b/fund-sys/src/main/resources/application.yml index ec9857c..ab78c4e 100644 --- a/fund-sys/src/main/resources/application.yml +++ b/fund-sys/src/main/resources/application.yml @@ -76,3 +76,22 @@ logging: pattern: console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" +# 多租户路由配置 +tenant: + routing: + enabled: true + tenant-header: X-Tenant-Id + tenant-group-header: X-Tenant-Group + group-separator: TENANT_ + default-tenant-id: "1" + shared-services: + - fund-gateway + - fund-report + - fund-file + services: + fund-sys: + vip-tenants: + - TENANT_VIP_001 + - TENANT_VIP_002 + fallback-to-shared: true + diff --git a/fund-sys/target/classes/application.yml b/fund-sys/target/classes/application.yml index ec9857c..ab78c4e 100644 --- a/fund-sys/target/classes/application.yml +++ b/fund-sys/target/classes/application.yml @@ -76,3 +76,22 @@ logging: pattern: console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" +# 多租户路由配置 +tenant: + routing: + enabled: true + tenant-header: X-Tenant-Id + tenant-group-header: X-Tenant-Group + group-separator: TENANT_ + default-tenant-id: "1" + shared-services: + - fund-gateway + - fund-report + - fund-file + services: + fund-sys: + vip-tenants: + - TENANT_VIP_001 + - TENANT_VIP_002 + fallback-to-shared: true + diff --git a/logs/fund-sys-shared-8100.log b/logs/fund-sys-shared-8100.log index f4586d1..4259cb1 100644 --- a/logs/fund-sys-shared-8100.log +++ b/logs/fund-sys-shared-8100.log @@ -1066,3 +1066,39 @@ java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBea at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) +2026-02-19 21:06:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 === +2026-02-19 21:06:06.997 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool +2026-02-19 21:06:06.998 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task +java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null + at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:499) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-02-19 21:11:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 === +2026-02-19 21:11:06.996 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool +2026-02-19 21:11:06.996 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task +java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null + at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:499) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) diff --git a/logs/fund-sys-tenant-vip001-8101.log b/logs/fund-sys-tenant-vip001-8101.log index b24c768..a31a855 100644 --- a/logs/fund-sys-tenant-vip001-8101.log +++ b/logs/fund-sys-tenant-vip001-8101.log @@ -1030,3 +1030,39 @@ java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBea at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) +2026-02-19 21:04:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 === +2026-02-19 21:04:07.550 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool +2026-02-19 21:04:07.550 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task +java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null + at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:499) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-02-19 21:09:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 === +2026-02-19 21:09:07.550 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool +2026-02-19 21:09:07.551 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task +java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null + at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:499) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) diff --git a/logs/fund-sys/error.log b/logs/fund-sys/error.log index e7f94a1..b6f0c8f 100644 --- a/logs/fund-sys/error.log +++ b/logs/fund-sys/error.log @@ -1374,3 +1374,67 @@ java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBea at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) +2026-02-19 21:04:07.550 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task +java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null + at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:499) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-02-19 21:06:06.998 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task +java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null + at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:499) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-02-19 21:09:07.551 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task +java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null + at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:499) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-02-19 21:11:06.996 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task +java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null + at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:499) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) diff --git a/logs/fund-sys/info.log b/logs/fund-sys/info.log index 2ab6df5..bf83d99 100644 --- a/logs/fund-sys/info.log +++ b/logs/fund-sys/info.log @@ -316,3 +316,11 @@ 2026-02-19 20:59:07.544 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool 2026-02-19 21:01:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 === 2026-02-19 21:01:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool +2026-02-19 21:04:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 === +2026-02-19 21:04:07.550 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool +2026-02-19 21:06:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 === +2026-02-19 21:06:06.997 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool +2026-02-19 21:09:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 === +2026-02-19 21:09:07.550 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool +2026-02-19 21:11:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 === +2026-02-19 21:11:06.996 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool