Files
starRiverProperty/maven-cw-elevator-application/deploy
反编译工作区 c5febc9905 docs: fix stale references post v2.0.17 alignment
- Update deploy/README.md: remove NincaCrkStdRibbonConfiguration ref,
  update JAR naming, add v2.0.17 config instructions
- Update elevator-v1-v2-init-timing-config-audit.md: add baseline note
- Update org-policy-verify-manual.md: JAR path + AppApplication class
- Update release script comment with current baseline version
- docs/AGENTS.md and service-discovery spec already updated in v2.0.17
2026-05-05 19:08:33 +08:00
..

电梯应用双版本同路径部署

每个发行目录内 JARapplication.propertiesapplication-access-control.properties(与生产 access-control 对齐)、bootstrap.propertiesConsul)与 redis-override.properties 位于同一目录run.sh 使用:

--spring.config.location=file:./application.properties,file:./application-access-control.properties,file:./redis-override.properties

(说明见下文:Boot 1.5 下 jar 内 classpath:/application.properties 往往最后生效,仅靠外置文件盖不住密码;profile=access-control 的分表与门禁业务参数以外置 application-access-control.properties 为准,内容已与 星中心/cw-elevator-application-V1.0.0.20211103/application-access-control.properties 同步。)

目录

目录 JAR 端口(见配置首行)
v1-legacy/ cw-elevator-application-V1.0.0.20211103.jar 18080
v2-maven/ cw-elevator-application-V1.0.0.20211103.jar(固定名,与 V1 一致) 18081

application.properties:在验证环境常用的 JDBC / Redis / Ribbon / Kafka / 端口等覆盖(数据库为生产还原时,请把 jdbc-url、账号 指到承载还原库的实例)。

application-access-control.properties:生产门禁侧参数(含 ShardingSphere 分表 2020..2030、门禁阈值、定时任务开关等),与 星中心 部署目录保持一致;更新时请从星中心同名文件覆盖后再提交。

属性文件最初由历史包 cw-elevator-application-V1.0.0.20211103/application.properties 演化而来;头部保留 server.port18080 / 18081)便于双实例并行(对拍 / API 套件)。

一次性同步 JAR

deploy/ 下执行(需已存在 V1 原始 JAR;V2 优先用 releases/cw-elevator-application-V<版本>.<日期>/ 中最新的同名 JAR,其次兼容旧路径 releases/v<版本>/,否则用 cw-elevator-application-starter/target/):

./sync-jars.sh

启动(两个终端)

cd v1-legacy && ./run.sh
cd v2-maven && ./run.sh

探活示例:curl -s http://127.0.0.1:18080/actuator/health18081

Consul192.168.3.12 Docker

本仓库在 v1-legacy/bootstrap.propertiesv2-maven/bootstrap.properties 中写入,并与 V1 运行包 bootstrap.properties 中 Consul 段对齐:

  • spring.cloud.consul.host=192.168.3.12
  • spring.cloud.consul.port=8500
  • spring.cloud.consul.enabled=true
  • spring.cloud.consul.discovery.register=true
  • spring.cloud.consul.discovery.enabled=false(与 V1 一致:不作为 Consul 客户端做服务发现)
  • spring.profiles.active=access-control(与 V1 一致)

用于覆盖 fat-jar 内 10.128.161.95:8500,与 deploy/consul-dockerhashicorp/consul:1.22)对齐。在同一目录执行 ./run.sh 时,Spring Cloud 会加载上述 bootstrap.properties

验证 Consulcurl -s http://192.168.3.12:8500/v1/status/leader。浏览器打开 http://192.168.3.12:8500 可看 UI。

Dubbo 属性说明bootstrap.properties 中的 dubbo.* 属性为历史遗留(V1 携带),当前运行时未启用 Dubbo(POM 中无 Dubbo 依赖),这些属性不生效。

Feign 上游服务(Ribbon 静态列表)

spring.cloud.consul.discovery.enabled=false(与 V1 对齐)时,不从 Consul 拉取上游服务实例。Feign 通过 Ribbon + ConfigurationBasedServerListapplication.properties{服务名}.ribbon.listOfServers 读取静态 IP 列表,按环境配置:

ninca-crk-std.ribbon.listOfServers=10.0.22.102:16106
ninca-common-component-organization.ribbon.listOfServers=...
ninca-common.ribbon.listOfServers=...

V2 v2.0.17 起不再需要 NIWSServerListClassNameNincaCrkStdRibbonConfigurationRibbon 默认 ConfigurationBasedServerList。)

Redis 与 SPRING_APPLICATION_JSON

fat JAR 的 classpath:/application.properties 会带内网旧 hostpassword;在 Spring Boot 1.5 下,同目录的 application.properties / redis-override.properties 往往压不过 jar 里同文件(见上节说明)。

当前做法deploy/merge-redis-json.sh 读取各目录下的 redis-override.properties,生成一行 SPRING_APPLICATION_JSON(包含 spring.redis.host / port / password),由 run.sh export 后再启动 JVM,优先级高于打包配置。

  • 默认已指向 redis-override.properties 中的地址与口令(若你的环境不一致,直接改该文件)。
  • 临时覆盖口令SPRING_REDIS_PASSWORD='别的密码' ./run.sh(若设为空字符串表示使用无密码 Redis)。
  • 需要 python3
  • 勿把生产口令提交到公开仓库;团队协作时口令宜走密钥管理,redis-override.properties 仅作本机示例。

修改配置

直接编辑对应目录下的 application.propertiesapplication-access-control.properties(与 JAR 同路径),重启进程生效。
Consul KV 中存在同名 spring.shardingsphere.* 等键,运行时仍以 Consul 覆盖为准,需与库表、本地文件三方对齐后再做生产模拟。

生产模拟时还可对齐的项(按需)

配置来源(星中心) deploy 中对应位置 说明
bootstrap.propertiesConsul / Dubbo v1-legacy/bootstrap.properties 当前保留验证用 Consul 地址;生产 Consul host、Dubbo zookeeper://... 若需一致,在确认网络可达后按需合并(V2 构建一般不写 Dubbo)。
application.propertiesjdbc/redis/kafka 同上目录 application.properties + redis-override.properties 还原库在哪台 MySQL、Redis 是否同生产,由你在本机改 URL/口令;勿将生产口令提交到公开仓库
application-access-control.properties 已内置与星中心同内容 生产变更分表年限时,从星中心覆盖此文件。

JDK 版本(避免 InaccessibleObjectException / CGLIB

历史 JAR 面向 JDK 8。本仓库在 deploy/common-java.sh 顶部用变量 DEPLOY_JDK8 写死默认路径(当前为 /usr/lib/jvm/java-8-openjdk-amd64)。换机器请只改这一处,或通过环境变量临时覆盖:

DEPLOY_JDK8=/你的/jdk8 ./run.sh

默认run.sh 使用 DEPLOY_JDK8不跟随 Conda 的 JAVA_HOME

  • 坚持用当前 Shell 里的 Java(如 Conda JDK17):
    ELEVATOR_USE_ENV_JAVA=1 ./run.sh
    非 JDK8 时会自动追加 --add-opens=...
  • 额外 JVM
    ELEVATOR_JAVA_OPTS="-Xmx512m" ./run.sh

发布包与「星中心」扁平目录对齐

执行 ./scripts/release-cw-elevator-application.sh <版本> 生成的 releases/cw-elevator-application-V<版本>.<日期>/(日期默认当天 YYYYMMDD,可用 RELEASE_DATE_LABEL 覆盖)除 ddl/ 外,发布根目录(与历史运行包 cw-elevator-application-V1.0.0.20211103 同层习惯)包含:

  • bootstrap.propertiesapplication.propertiesapplication-access-control.properties(与 deploy/v2-maven/ 同源;与 JAR、start.sh 同目录,不再单独建 config/)。
  • start.sh / stop.sh(对齐现场启停脚本)、cw-elevator-application.serviceWorkingDirectory/ExecStart 中占位路径默认为 /path/to/cw-elevator-application,部署前请替换为实际目录)。
  • run.shcommon-java.sh(供 run.sh source)。
  • collect_elevator_runtime_evidence.sh:与仓库根 scripts/ 同源,置于发布包根目录;现场只读采集进程参数、配置快照、日志关键行、Consul 健康与 KV,输出 tar.gz(用法见脚本头注释)。

默认还会生成同名 **releases/cw-elevator-application-V<版本>.<日期>.zip**;不需要 zip 时:RELEASE_MAKE_ZIP=0 ./scripts/release-cw-elevator-application.sh <版本>

Shell 脚本换行(若出现 bash\r

在 Windows 或某些编辑器下保存成 CRLF 会导致 #!/usr/bin/env bash\r。仓库根已有 .editorconfig 约束 *.sh 使用 LF;若再出现可执行:

find . -name '*.sh' -type f -exec sed -i 's/\r$//' {} +(在 反编译 根目录)