mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 08:20:31 +08:00
feat(elevator): 对齐 V1 lib 的 Davinci/扫描/事件与部署配置
- davinci-manager-storage:FilePart 路径与基址按 V1 JAR(/portal/file、/part/*、GET /download) - 启动类:扫描 cn.cloudwalk.serial 与 cn.cloudwalk.cwos.client.resource,补 UUIDSerial 与 ApplicationService - deploy:v1/v2 application 中 cloudwalk.serial.enabled、Kafka 指向 192.168.3.12:9092;deploy/.gitignore 忽略日志 - cloudwalk-common-serial:补充 META-INF/spring.factories(Boot 自动配置) - 电梯:Session 配置、Davinci Bean、Feign 包、MQTT/Visitor/Zone Feign;部署脚本与 API parity 工具更新 - 文档与根脚本若干;未纳入大体积 jar/zip 与 v1 CFR 对比目录 Made-with: Cursor Former-commit-id: b76d142d13ebb5c0898de2d9d11bc583876829c2
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
# 体积大,由 sync-jars.sh 生成;属性文件可版本管理
|
||||
*.jar
|
||||
|
||||
# 运行/调试产生的日志不纳入版本库
|
||||
**/logs/*.log
|
||||
@@ -0,0 +1,92 @@
|
||||
# 电梯应用双版本同路径部署
|
||||
|
||||
每个发行目录内 **JAR**、**`application.properties`**、**`bootstrap.properties`**(Consul)与 **`redis-override.properties`** 位于**同一目录**。`run.sh` 使用:
|
||||
|
||||
```bash
|
||||
--spring.config.location=file:./application.properties,file:./redis-override.properties
|
||||
```
|
||||
|
||||
(说明见下文:Boot 1.5 下 jar 内 `classpath:/application.properties` 往往最后生效,仅靠外置文件盖不住密码。)
|
||||
|
||||
## 目录
|
||||
|
||||
| 目录 | JAR | 端口(见配置首行) |
|
||||
|------|-----|-------------------|
|
||||
| `v1-legacy/` | `cw-elevator-application-V1.0.0.20211103.jar` | **18080** |
|
||||
| `v2-maven/` | `cw-elevator-application-2.0.0.jar` | **18081** |
|
||||
|
||||
属性文件由历史包 `cw-elevator-application-V1.0.0.20211103/application.properties` 复制而来,仅在各自文件头部增加了 **注释** 与 **`server.port`**,便于双实例并行(对拍 / API 套件)。
|
||||
|
||||
## 一次性同步 JAR
|
||||
|
||||
在 **`deploy/`** 下执行(需已存在 V1 原始 JAR;V2 优先用 `releases/v2.0.0/`,否则用 `cw-elevator-application-starter/target/`):
|
||||
|
||||
```bash
|
||||
./sync-jars.sh
|
||||
```
|
||||
|
||||
## 启动(两个终端)
|
||||
|
||||
```bash
|
||||
cd v1-legacy && ./run.sh
|
||||
```
|
||||
|
||||
```bash
|
||||
cd v2-maven && ./run.sh
|
||||
```
|
||||
|
||||
探活示例:`curl -s http://127.0.0.1:18080/actuator/health` 与 `18081`。
|
||||
|
||||
## Consul(`192.168.3.12` Docker)
|
||||
|
||||
本仓库在 **`v1-legacy/bootstrap.properties`**、**`v2-maven/bootstrap.properties`** 中写入:
|
||||
|
||||
- `spring.cloud.consul.host=192.168.3.12`
|
||||
- `spring.cloud.consul.port=8500`
|
||||
|
||||
用于覆盖 fat-jar 内 **`10.128.161.95:8500`**,与 **`deploy/consul-docker`**(`hashicorp/consul:1.22`)对齐。在同一目录执行 `./run.sh` 时,Spring Cloud 会加载上述 **`bootstrap.properties`**。
|
||||
|
||||
验证 Consul:`curl -s http://192.168.3.12:8500/v1/status/leader`。浏览器打开 **`http://192.168.3.12:8500`** 可看 UI。
|
||||
|
||||
**说明**:jar 内 **Dubbo / ZooKeeper** 仍可能指向旧 IP(如 `10.128.161.95:2181`);若启动报 ZK 连接失败,需在 **`application.properties`** 中另行改 Dubbo 注册中心(本次仅处理 Consul)。
|
||||
|
||||
### Feign `ninca-crk-std`(Ribbon / Consul)
|
||||
|
||||
若日志出现 **`Load balancer does not have available server for client: ninca-crk-std`**,表示 **Consul 里没有名为 `ninca-crk-std` 的注册实例**,而 Feign 默认用 **Consul 服务发现**拉实例列表。
|
||||
|
||||
**做法**:① 在目标环境启动 **`ninca-crk-std`(访客标准服务)** 并注册到同一 Consul;或 ② 在 **`application.properties`** 中使用 **Ribbon 静态列表**(已增加 `ninca-crk-std.ribbon.NIWSServerListClassName` 与 `listOfServers`,默认与 `ninca-crk-std.ip` 一致),把 **`listOfServers`** 改成你实际可访问的 **`主机:端口`**。
|
||||
|
||||
## Redis 与 `SPRING_APPLICATION_JSON`
|
||||
|
||||
fat JAR 的 `classpath:/application.properties` 会带内网旧 **host** 与 **password**;在 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.properties`**(与 JAR 同路径),重启进程生效。
|
||||
|
||||
## 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`
|
||||
|
||||
## Shell 脚本换行(若出现 `bash\r`)
|
||||
|
||||
在 Windows 或某些编辑器下保存成 **CRLF** 会导致 `#!/usr/bin/env bash\r`。仓库根已有 **`.editorconfig`** 约束 `*.sh` 使用 **LF**;若再出现可执行:
|
||||
|
||||
`find . -name '*.sh' -type f -exec sed -i 's/\r$//' {} +`(在 `反编译` 根目录)
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck shell=bash
|
||||
# 由 v1-legacy/run.sh、v2-maven/run.sh source:JAVA_HOME;非 JDK8 时追加 --add-opens。
|
||||
#
|
||||
# === 本机 JDK 8 安装根目录(含 bin/java);换机器只需改下行默认路径或通过环境变量覆盖 ===
|
||||
: "${DEPLOY_JDK8:=/usr/lib/jvm/java-8-openjdk-amd64}"
|
||||
|
||||
_pick_java_home() {
|
||||
if [[ "${ELEVATOR_USE_ENV_JAVA:-0}" == "1" ]] && [[ -n "${JAVA_HOME:-}" && -x "${JAVA_HOME}/bin/java" ]]; then
|
||||
return 0
|
||||
fi
|
||||
if [[ -x "${DEPLOY_JDK8}/bin/java" ]]; then
|
||||
export JAVA_HOME="${DEPLOY_JDK8}"
|
||||
return 0
|
||||
fi
|
||||
for d in /usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/java-1.8.0-openjdk; do
|
||||
if [[ -x "$d/bin/java" ]]; then
|
||||
export JAVA_HOME="$d"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
if [[ -n "${JAVA_HOME:-}" && -x "${JAVA_HOME}/bin/java" ]]; then
|
||||
return 0
|
||||
fi
|
||||
export JAVA_HOME="${JAVA_HOME:-${DEPLOY_JDK8}}"
|
||||
}
|
||||
|
||||
_jdk8_open_flags() {
|
||||
local java="$1"
|
||||
if "$java" -version 2>&1 | grep -qE 'version "1\.8\.'; then
|
||||
echo ""
|
||||
return
|
||||
fi
|
||||
echo "--add-opens=java.base/java.lang=ALL-UNNAMED"
|
||||
echo "--add-opens=java.base/java.lang.reflect=ALL-UNNAMED"
|
||||
echo "--add-opens=java.base/java.util=ALL-UNNAMED"
|
||||
echo "--add-opens=java.base/java.io=ALL-UNNAMED"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
# Consul 单机 Server(Docker),镜像 hashicorp/consul:1.22
|
||||
# 在存放本文件的目录执行: docker compose up -d
|
||||
# UI / HTTP API: http://<宿主机IP>:8500 (例: 192.168.3.12:8500)
|
||||
# 应用侧: spring.cloud.consul.host=<宿主机IP> spring.cloud.consul.port=8500
|
||||
services:
|
||||
consul:
|
||||
image: hashicorp/consul:1.22
|
||||
container_name: consul
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8500:8500" # HTTP API / UI
|
||||
- "8300:8300" # Server RPC
|
||||
- "8301:8301" # LAN Serf
|
||||
- "8302:8302/udp"
|
||||
- "8302:8302/tcp"
|
||||
- "8600:8600/tcp"
|
||||
- "8600:8600/udp" # DNS
|
||||
command: >
|
||||
agent -server -bootstrap-expect=1 -ui
|
||||
-client=0.0.0.0
|
||||
-bind=0.0.0.0
|
||||
-data-dir=/consul/data
|
||||
volumes:
|
||||
- consul-data:/consul/data
|
||||
# 若夸主机访问 RPC 异常,可在宿主机上改为显式 advertise(示例,按实际 IP 修改):
|
||||
# command: >
|
||||
# agent -server -bootstrap-expect=1 -ui -client=0.0.0.0 -bind=0.0.0.0
|
||||
# -advertise=192.168.3.12 -data-dir=/consul/data
|
||||
|
||||
volumes:
|
||||
consul-data:
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
# 读取 redis-override.properties,输出一行 SPRING_APPLICATION_JSON(紧凑 JSON)。
|
||||
# 若环境变量 SPRING_REDIS_PASSWORD 已设置(含空字符串),则覆盖文件中的 spring.redis.password。
|
||||
# 用法: export SPRING_APPLICATION_JSON="$(./merge-redis-json.sh /path/to/redis-override.properties)"
|
||||
set -euo pipefail
|
||||
PROP="${1:?用法: merge-redis-json.sh <redis-override.properties>}"
|
||||
if [[ ! -f "$PROP" ]]; then
|
||||
echo "找不到文件: $PROP" >&2
|
||||
exit 1
|
||||
fi
|
||||
python3 - "$PROP" <<'PY'
|
||||
import json, os, pathlib, re, sys
|
||||
|
||||
prop = pathlib.Path(sys.argv[1])
|
||||
lines = prop.read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def get(key):
|
||||
pat = r"^" + re.escape(key) + r"\s*=\s*(.*?)\s*$"
|
||||
m = re.search(pat, lines, re.MULTILINE)
|
||||
return m.group(1).strip() if m else ""
|
||||
|
||||
|
||||
host = get("spring.redis.host") or "127.0.0.1"
|
||||
port_raw = get("spring.redis.port") or "6379"
|
||||
try:
|
||||
port = int(port_raw)
|
||||
except ValueError:
|
||||
port = 6379
|
||||
|
||||
if "SPRING_REDIS_PASSWORD" in os.environ:
|
||||
pwd = os.environ["SPRING_REDIS_PASSWORD"]
|
||||
else:
|
||||
pwd = get("spring.redis.password")
|
||||
|
||||
payload = {"spring": {"redis": {"host": host, "port": port, "password": pwd}}}
|
||||
print(json.dumps(payload, separators=(",", ":")))
|
||||
PY
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
# 将 V1 / V2 JAR 复制到与各目录 application.properties 同路径,便于 java -jar 启动。
|
||||
set -euo pipefail
|
||||
|
||||
DEPLOY="$(cd "$(dirname "$0")" && pwd)"
|
||||
MAVEN="$(cd "$DEPLOY/.." && pwd)"
|
||||
REPO="$(cd "$MAVEN/.." && pwd)"
|
||||
|
||||
V1_SRC="${REPO}/cw-elevator-application-V1.0.0.20211103/cw-elevator-application-V1.0.0.20211103.jar"
|
||||
V2_REL="${MAVEN}/releases/v2.0.0/cw-elevator-application-2.0.0.jar"
|
||||
V2_TGT="${MAVEN}/cw-elevator-application-starter/target/cw-elevator-application-2.0.0.jar"
|
||||
|
||||
if [[ ! -f "$V1_SRC" ]]; then
|
||||
echo "ERROR: 未找到 V1 JAR: $V1_SRC" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 优先 target:本地 mvn package 后应与 deploy 同步,避免 releases 里旧包盖住新构建。
|
||||
V2_SRC=""
|
||||
if [[ -f "$V2_TGT" ]]; then
|
||||
V2_SRC="$V2_TGT"
|
||||
elif [[ -f "$V2_REL" ]]; then
|
||||
V2_SRC="$V2_REL"
|
||||
else
|
||||
echo "ERROR: 未找到 V2 JAR(请先 mvn package 或放入 releases):" >&2
|
||||
echo " $V2_TGT 或 $V2_REL" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
install -m0644 "$V1_SRC" "${DEPLOY}/v1-legacy/cw-elevator-application-V1.0.0.20211103.jar"
|
||||
install -m0644 "$V2_SRC" "${DEPLOY}/v2-maven/cw-elevator-application-2.0.0.jar"
|
||||
|
||||
echo "OK: V1 -> deploy/v1-legacy/"
|
||||
echo "OK: V2 -> deploy/v2-maven/"
|
||||
ls -la "${DEPLOY}/v1-legacy/"*.jar "${DEPLOY}/v2-maven/"*.jar
|
||||
@@ -0,0 +1,120 @@
|
||||
# deploy/v1-legacy \uFF1A\u5386\u53F2\u5305 cw-elevator-application-V1.0.0.20211103.jar\uFF08\u540C\u76EE\u5F55\u542F\u52A8\uFF09
|
||||
server.port=18080
|
||||
spring.application.name=elevator-app
|
||||
# OpenFeign 2.1.x\uFF1A\u591A\u4E2A @FeignClient \u5171\u540C name \u5360\u4F4D\u7B26\u65F6\u91CD\u590D\u6CE8\u518C FeignClientSpecification\uFF0C\u4E0E Spring \u9519\u8BEF\u63D0\u793A\u4E00\u81F4
|
||||
spring.main.allow-bean-definition-overriding=true
|
||||
|
||||
# spring\u914D\u7F6E
|
||||
spring.mvc.throw-exception-if-no-handler-found=true
|
||||
spring.mvc.locale=zh_CN
|
||||
# \u8D44\u6E90\u6587\u4EF6\u914D\u7F6E
|
||||
spring.messages.basename=access-control
|
||||
spring.messages.always-use-message-format=true
|
||||
spring.messages.encoding=utf-8
|
||||
# http\u914D\u7F6E
|
||||
spring.http.multipart.max-file-size=200MB
|
||||
spring.http.multipart.max-request-size=200MB
|
||||
spring.http.encoding.force=true
|
||||
spring.http.encoding.charset=UTF-8
|
||||
spring.http.encoding.enabled=true
|
||||
# \u65E5\u5FD7\u914D\u7F6E
|
||||
logging.config=classpath:logs/logback.xml
|
||||
logging.file=${spring.application.name}
|
||||
logging.path=logs
|
||||
logging.level.root=info
|
||||
logging.level.cn.cloudwalk=info
|
||||
# mybatis\u914D\u7F6E
|
||||
mybatis.mapper-locations=classpath*:cn/cloudwalk/elevator/**/*.xml
|
||||
mybatis.config-location=classpath:mapper/mybatis-config.xml
|
||||
# \u5E8F\u5217\u53F7\u914D\u7F6E
|
||||
cloudwalk.serial.enabled=true
|
||||
cloudwalk.serial.serial-length=8
|
||||
cloudwalk.serial.serial-type=redis
|
||||
cloudwalk.serial.serial-redis-key=CLOUDWALK-ACS-SERIAL-KEY
|
||||
# \u7F13\u5B58\u914D\u7F6E
|
||||
cloudwalk.spring.cache.expires=CACHE_NAME_APPLICATIONIDS#21600,ACS_DeviceTypesCache#7200,ACS_DeviceTypeFeaturesCache#7200,ACS_DeviceAttrsCache#7200,ACS_RecordStatisticsCache#90000,ACS_AreaTreeCache#60
|
||||
# \u5185\u90E8\u63A5\u53E3\u8C03\u7528\u5BA2\u6237\u7AEF\u53CA\u8D85\u65F6\u914D\u7F6E
|
||||
feign.hystrix.enable=true
|
||||
feign.httpclient.enable=false
|
||||
feign.okhttp.enable=true
|
||||
ribbon.http.client.enabled=false
|
||||
ribbon.okhttp.enabled=true
|
||||
ribbon.ReadTimeout=10000
|
||||
ribbon.ConnectTimeout=10000
|
||||
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
|
||||
# \u5065\u5EB7\u68C0\u67E5\u914D\u7F6E
|
||||
management.health.redis.enabled=false
|
||||
management.health.db.enabled=false
|
||||
# \u6570\u636E\u8131\u654F\u914D\u7F6E
|
||||
cloudwalk.datafield.enable=true
|
||||
cloudwalk.datafield.securityKey=d4b2aabc97394a12a27fc3cca6cd9ba1
|
||||
cloudwalk.datafield.encrypt=AES
|
||||
# redis\u914D\u7F6E\uFF08\u672C\u673A Docker\uFF1Aybs-redis 6379->6379\uFF0C\u82E5\u7528 craftlabs-redis \u6539\u4E3A 6380\uFF09
|
||||
spring.redis.host=127.0.0.1
|
||||
spring.redis.port=6379
|
||||
# \u672C\u673A Redis \u65E0\u5BC6\u7801\u65F6\u5FC5\u987B\u4FDD\u7559\u4E0B\u884C\u7A7A\u503C\uFF0C\u4EE5\u8986\u76D6 fat-jar \u5185\u5D4C\u65E7\u5BC6\u7801\uFF08\u5426\u5219 Redisson ERR AUTH\uFF09
|
||||
spring.redis.password=
|
||||
spring.redis.database=5
|
||||
spring.redis.timeout=0
|
||||
spring.redis.pool.max-active=10
|
||||
spring.redis.pool.max-idle=1
|
||||
spring.redis.pool.max-wait=10
|
||||
spring.redis.pool.min-idle=0
|
||||
# \u6570\u636E\u5E93sharding\u914D\u7F6E
|
||||
spring.shardingsphere.datasource.names=ds0
|
||||
spring.shardingsphere.datasource.ds0.type=com.zaxxer.hikari.HikariDataSource
|
||||
spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
|
||||
spring.shardingsphere.datasource.ds0.jdbc-url=jdbc:mysql://192.168.3.12:3307/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
|
||||
spring.shardingsphere.datasource.ds0.username=root
|
||||
spring.shardingsphere.datasource.ds0.password=123456
|
||||
spring.shardingsphere.datasource.ds0.connection-timeout=60000
|
||||
spring.shardingsphere.datasource.ds0.maximum-pool-size=20
|
||||
spring.shardingsphere.datasource.ds0.minimum-idle=5
|
||||
spring.shardingsphere.datasource.ds0.max-lifetime=1765000
|
||||
spring.shardingsphere.datasource.ds0.auto-commit=true
|
||||
spring.shardingsphere.datasource.ds0.pool-name=ds0-pool
|
||||
spring.shardingsphere.props.sql.show=false
|
||||
spring.shardingsphere.sharding.default-data-source-name=ds0
|
||||
# \u5FAE\u670D\u52A1\u670D\u52A1\u540D\u914D\u7F6E
|
||||
feign.device.name=cwos-portal
|
||||
feign.resource.name=cwos-portal
|
||||
feign.cwos-portal.name=cwos-portal
|
||||
feign.ninca-crk-std.name=ninca-crk-std
|
||||
# Feign/Ribbon 默认从 Consul 按服务名发现 ninca-crk-std;Consul 无注册时出现「Load balancer does not have available server」。
|
||||
# 以下两行改为静态 ServerList(与下行 ninca-crk-std.ip 同目标时保持一致;若访客服务只部署在其它 IP/端口请一起修改):
|
||||
ninca-crk-std.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
|
||||
ninca-crk-std.ribbon.listOfServers=10.128.161.95:16106
|
||||
feign.davinci-portal.name=cwos-portal
|
||||
feign.component-organization.name=ninca-common-component-organization
|
||||
feign.ninca-common.name=ninca-common
|
||||
feign.mqtt.name=cloudwalk-device-thirdparty
|
||||
# CWOS\u4E8B\u4EF6\u914D\u7F6E
|
||||
cloudwalk.event.bootstrap-servers=192.168.3.12:9092
|
||||
cloudwalk.event.group-id=cw-elevator-application-1
|
||||
cloudwalk.event.handler-executor-config.core-pool-size=10
|
||||
cloudwalk.event.handler-executor-config.maximum-pool-size=30
|
||||
# \u5206\u5E03\u5F0F\u9501\u914D\u7F6E
|
||||
intelligent.lock.enable=true
|
||||
intelligent.lock.config.default-wait-time=10000
|
||||
lockWatchdogTimeout=21000
|
||||
# PERSON_NAME_SPACE
|
||||
person.name.space=recordEvent
|
||||
elevator.application.key=xinghewan
|
||||
elevator.application.time=600
|
||||
elevator.application.keyA=5B7DEF88FF04
|
||||
ninca-crk-std.ip=10.128.161.95:16106
|
||||
#\u53D1\u9001\u7B2C\u4E09\u65B9\u6570\u636Eip
|
||||
sendRecord.ip=hrec.star-river.com:32165
|
||||
sendRecord.token.corpId=53db867a8bb747a1bd04dd1afcad8ca6
|
||||
sendRecord.token.appKey=293e2d708f0143c2957b702cef44d951
|
||||
sendRecord.token.appSecret=5f6995009b864669b52041b8f5dc4625
|
||||
sendRecord.boolean=true
|
||||
|
||||
# \u8BBE\u5907\u5904\u7406\u7EBF\u7A0B\u6C60\u914D\u7F6E
|
||||
ninca.update.floor.pool.corePoolSize=5
|
||||
ninca.update.floor.pool.maxPoolSize=5
|
||||
ninca.update.floor.pool.queueCapacity=100000
|
||||
ninca.update.floor.pool.keepAliveSeconds=150
|
||||
ninca.update.floor.pool.allowCoreThreadTimeOut=true
|
||||
#\u697C\u680Bid
|
||||
floor.building.id=605560539791228928
|
||||
@@ -0,0 +1,4 @@
|
||||
# 与 JAR 同目录,Spring Cloud 会加载本文件,覆盖 jar 内 bootstrap.properties 中的旧 Consul 地址。
|
||||
# 对应 192.168.3.12 上 Docker: hashicorp/consul:1.22(8500)
|
||||
spring.cloud.consul.host=192.168.3.12
|
||||
spring.cloud.consul.port=8500
|
||||
@@ -0,0 +1,5 @@
|
||||
# 必须在 spring.config.location 中排在 application.properties 之后加载。
|
||||
# run.sh 用 merge-redis-json.sh 将本文件转为 SPRING_APPLICATION_JSON,以压过 fat-jar 内 classpath 里的 Redis 配置。
|
||||
spring.redis.host=192.168.3.12
|
||||
spring.redis.port=6379
|
||||
spring.redis.password=1qaz!QAZ
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
# 与当前目录下 application.properties 同路径启动 V1 历史包。
|
||||
# 默认优先使用系统 JDK 8(避免 Conda 的 JDK17+ 触发 CGLIB 模块错误)。
|
||||
# 若必须用当前环境的 JAVA_HOME: ELEVATOR_USE_ENV_JAVA=1 ./run.sh
|
||||
# 额外 JVM 参数: ELEVATOR_JAVA_OPTS="-Xmx512m" ./run.sh
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")"
|
||||
# shellcheck source=../common-java.sh
|
||||
source "$(cd "$(dirname "$0")" && pwd)/../common-java.sh"
|
||||
|
||||
JAR="cw-elevator-application-V1.0.0.20211103.jar"
|
||||
if [[ ! -f "$JAR" ]]; then
|
||||
echo "缺少 $JAR,请在 deploy 目录执行: ./sync-jars.sh" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
_pick_java_home
|
||||
if [[ ! -x "${JAVA_HOME}/bin/java" ]]; then
|
||||
echo "ERROR: 未找到可执行的 JDK。请安装 openjdk-8-jdk,或设定 JAVA_HOME / ELEVATOR_USE_ENV_JAVA=1 ./run.sh(使用 Conda 等当前环境)。" >&2
|
||||
exit 1
|
||||
fi
|
||||
JAVA="${JAVA_HOME}/bin/java"
|
||||
OPEN_FLAGS=()
|
||||
while IFS= read -r line; do
|
||||
[[ -n "$line" ]] && OPEN_FLAGS+=("$line")
|
||||
done < <(_jdk8_open_flags "$JAVA")
|
||||
|
||||
# classpath:/application.properties 最后加载会盖住外置 properties;用 merge-redis-json.sh 把 redis-override.properties
|
||||
# 转成 SPRING_APPLICATION_JSON(含 host/port/password),优先级高于 jar。
|
||||
# 临时改密码:SPRING_REDIS_PASSWORD='其它' ./run.sh(含空字符串表示无密码)
|
||||
if ! command -v python3 >/dev/null 2>&1; then
|
||||
echo "需要 python3(deploy/merge-redis-json.sh)。请安装 python3。" >&2
|
||||
exit 1
|
||||
fi
|
||||
MERGE="$(cd "$(dirname "$0")" && pwd)/../merge-redis-json.sh"
|
||||
if [[ ! -x "$MERGE" ]]; then
|
||||
chmod +x "$MERGE" 2>/dev/null || true
|
||||
fi
|
||||
export SPRING_APPLICATION_JSON="$("$MERGE" "$PWD/redis-override.properties")"
|
||||
# shellcheck disable=SC2086
|
||||
exec "$JAVA" "${OPEN_FLAGS[@]}" ${ELEVATOR_JAVA_OPTS:-} -jar "$JAR" \
|
||||
--spring.config.location=file:./application.properties,file:./redis-override.properties
|
||||
@@ -0,0 +1,119 @@
|
||||
# deploy/v2-maven \uFF1Amaven \u6784\u5EFA cw-elevator-application-2.0.0.jar\uFF08\u540C\u76EE\u5F55\u542F\u52A8\uFF09
|
||||
server.port=18081
|
||||
spring.application.name=cw-elevator-application
|
||||
# Boot 1.5 \u65E0 spring.main.allow-bean-definition-overriding\uFF1B\u82E5\u91CD\u590D Bean \u9700\u5728\u4EE3\u7801\u4FA7\u6D88\u6B67\u4E49\u6216\u5347\u7EA7 Spring Boot
|
||||
|
||||
|
||||
# spring\u914D\u7F6E
|
||||
spring.mvc.throw-exception-if-no-handler-found=true
|
||||
spring.mvc.locale=zh_CN
|
||||
# \u8D44\u6E90\u6587\u4EF6\u914D\u7F6E
|
||||
spring.messages.basename=access-control
|
||||
spring.messages.always-use-message-format=true
|
||||
spring.messages.encoding=utf-8
|
||||
# http\u914D\u7F6E
|
||||
spring.http.multipart.max-file-size=200MB
|
||||
spring.http.multipart.max-request-size=200MB
|
||||
spring.http.encoding.force=true
|
||||
spring.http.encoding.charset=UTF-8
|
||||
spring.http.encoding.enabled=true
|
||||
# \u65E5\u5FD7\u914D\u7F6E
|
||||
logging.config=classpath:logs/logback.xml
|
||||
logging.file=${spring.application.name}
|
||||
logging.path=logs
|
||||
logging.level.root=info
|
||||
logging.level.cn.cloudwalk=info
|
||||
# mybatis\u914D\u7F6E
|
||||
mybatis.mapper-locations=classpath*:cn/cloudwalk/elevator/**/*.xml
|
||||
mybatis.config-location=classpath:mapper/mybatis-config.xml
|
||||
# \u5E8F\u5217\u53F7\u914D\u7F6E
|
||||
cloudwalk.serial.enabled=true
|
||||
cloudwalk.serial.serial-length=8
|
||||
cloudwalk.serial.serial-type=redis
|
||||
cloudwalk.serial.serial-redis-key=CLOUDWALK-ACS-SERIAL-KEY
|
||||
# \u7F13\u5B58\u914D\u7F6E
|
||||
cloudwalk.spring.cache.expires=CACHE_NAME_APPLICATIONIDS#21600,ACS_DeviceTypesCache#7200,ACS_DeviceTypeFeaturesCache#7200,ACS_DeviceAttrsCache#7200,ACS_RecordStatisticsCache#90000,ACS_AreaTreeCache#60
|
||||
# \u5185\u90E8\u63A5\u53E3\u8C03\u7528\u5BA2\u6237\u7AEF\u53CA\u8D85\u65F6\u914D\u7F6E
|
||||
feign.hystrix.enable=true
|
||||
feign.httpclient.enable=false
|
||||
feign.okhttp.enable=true
|
||||
ribbon.http.client.enabled=false
|
||||
ribbon.okhttp.enabled=true
|
||||
ribbon.ReadTimeout=10000
|
||||
ribbon.ConnectTimeout=10000
|
||||
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
|
||||
# \u5065\u5EB7\u68C0\u67E5\u914D\u7F6E
|
||||
management.health.redis.enabled=false
|
||||
management.health.db.enabled=false
|
||||
# \u6570\u636E\u8131\u654F\u914D\u7F6E
|
||||
cloudwalk.datafield.enable=true
|
||||
cloudwalk.datafield.securityKey=d4b2aabc97394a12a27fc3cca6cd9ba1
|
||||
cloudwalk.datafield.encrypt=AES
|
||||
# redis\u914D\u7F6E\uFF08\u672C\u673A Docker\uFF1Aybs-redis 6379->6379\uFF0C\u82E5\u7528 craftlabs-redis \u6539\u4E3A 6380\uFF09
|
||||
spring.redis.host=127.0.0.1
|
||||
spring.redis.port=6379
|
||||
# \u672C\u673A Redis \u65E0\u5BC6\u7801\u65F6\u5FC5\u987B\u4FDD\u7559\u4E0B\u884C\u7A7A\u503C\uFF0C\u4EE5\u8986\u76D6 fat-jar \u5185\u5D4C\u65E7\u5BC6\u7801\uFF08\u5426\u5219 Redisson ERR AUTH\uFF09
|
||||
spring.redis.password=
|
||||
spring.redis.database=5
|
||||
spring.redis.timeout=0
|
||||
spring.redis.pool.max-active=10
|
||||
spring.redis.pool.max-idle=1
|
||||
spring.redis.pool.max-wait=10
|
||||
spring.redis.pool.min-idle=0
|
||||
# \u6570\u636E\u5E93sharding\u914D\u7F6E
|
||||
spring.shardingsphere.datasource.names=ds0
|
||||
spring.shardingsphere.datasource.ds0.type=com.zaxxer.hikari.HikariDataSource
|
||||
spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
|
||||
spring.shardingsphere.datasource.ds0.jdbc-url=jdbc:mysql://192.168.3.12:3307/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
|
||||
spring.shardingsphere.datasource.ds0.username=root
|
||||
spring.shardingsphere.datasource.ds0.password=123456
|
||||
spring.shardingsphere.datasource.ds0.connection-timeout=60000
|
||||
spring.shardingsphere.datasource.ds0.maximum-pool-size=20
|
||||
spring.shardingsphere.datasource.ds0.minimum-idle=5
|
||||
spring.shardingsphere.datasource.ds0.max-lifetime=1765000
|
||||
spring.shardingsphere.datasource.ds0.auto-commit=true
|
||||
spring.shardingsphere.datasource.ds0.pool-name=ds0-pool
|
||||
spring.shardingsphere.props.sql.show=false
|
||||
spring.shardingsphere.sharding.default-data-source-name=ds0
|
||||
# \u5FAE\u670D\u52A1\u670D\u52A1\u540D\u914D\u7F6E
|
||||
feign.device.name=cwos-portal
|
||||
feign.resource.name=cwos-portal
|
||||
feign.cwos-portal.name=cwos-portal
|
||||
feign.ninca-crk-std.name=ninca-crk-std
|
||||
# 见 v1-legacy 同段注释:Consul 无 ninca-crk-std 时用静态 Ribbon 列表。
|
||||
ninca-crk-std.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
|
||||
ninca-crk-std.ribbon.listOfServers=10.128.161.95:16106
|
||||
feign.davinci-portal.name=cwos-portal
|
||||
feign.component-organization.name=ninca-common-component-organization
|
||||
feign.ninca-common.name=ninca-common
|
||||
feign.mqtt.name=cloudwalk-device-thirdparty
|
||||
# CWOS\u4E8B\u4EF6\u914D\u7F6E
|
||||
cloudwalk.event.bootstrap-servers=192.168.3.12:9092
|
||||
cloudwalk.event.group-id=cw-elevator-application-1
|
||||
cloudwalk.event.handler-executor-config.core-pool-size=10
|
||||
cloudwalk.event.handler-executor-config.maximum-pool-size=30
|
||||
# \u5206\u5E03\u5F0F\u9501\u914D\u7F6E
|
||||
intelligent.lock.enable=true
|
||||
intelligent.lock.config.default-wait-time=10000
|
||||
lockWatchdogTimeout=21000
|
||||
# PERSON_NAME_SPACE
|
||||
person.name.space=recordEvent
|
||||
elevator.application.key=xinghewan
|
||||
elevator.application.time=600
|
||||
elevator.application.keyA=5B7DEF88FF04
|
||||
ninca-crk-std.ip=10.128.161.95:16106
|
||||
#\u53D1\u9001\u7B2C\u4E09\u65B9\u6570\u636Eip
|
||||
sendRecord.ip=hrec.star-river.com:32165
|
||||
sendRecord.token.corpId=53db867a8bb747a1bd04dd1afcad8ca6
|
||||
sendRecord.token.appKey=293e2d708f0143c2957b702cef44d951
|
||||
sendRecord.token.appSecret=5f6995009b864669b52041b8f5dc4625
|
||||
sendRecord.boolean=true
|
||||
|
||||
# \u8BBE\u5907\u5904\u7406\u7EBF\u7A0B\u6C60\u914D\u7F6E
|
||||
ninca.update.floor.pool.corePoolSize=5
|
||||
ninca.update.floor.pool.maxPoolSize=5
|
||||
ninca.update.floor.pool.queueCapacity=100000
|
||||
ninca.update.floor.pool.keepAliveSeconds=150
|
||||
ninca.update.floor.pool.allowCoreThreadTimeOut=true
|
||||
#\u697C\u680Bid
|
||||
floor.building.id=605560539791228928
|
||||
@@ -0,0 +1,3 @@
|
||||
# 覆盖 fat-jar 内嵌 Consul 地址,指向局域网 Docker Consul。
|
||||
spring.cloud.consul.host=192.168.3.12
|
||||
spring.cloud.consul.port=8500
|
||||
@@ -0,0 +1,4 @@
|
||||
# run.sh 将本文件合并为 SPRING_APPLICATION_JSON,覆盖 jar 内 Redis 配置。
|
||||
spring.redis.host=192.168.3.12
|
||||
spring.redis.port=6379
|
||||
spring.redis.password=1qaz!QAZ
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
# 与当前目录下 application.properties 同路径启动 V2(maven 构建)包。
|
||||
# 默认优先系统 JDK 8;若只有 JDK11+ 会自动附加 --add-opens。
|
||||
# ELEVATOR_USE_ENV_JAVA=1 ./run.sh 使用当前 JAVA_HOME(如 Conda)。
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")"
|
||||
# shellcheck source=../common-java.sh
|
||||
source "$(cd "$(dirname "$0")" && pwd)/../common-java.sh"
|
||||
|
||||
JAR="cw-elevator-application-2.0.0.jar"
|
||||
if [[ ! -f "$JAR" ]]; then
|
||||
echo "缺少 $JAR,请在 deploy 目录执行: ./sync-jars.sh" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
_pick_java_home
|
||||
if [[ ! -x "${JAVA_HOME}/bin/java" ]]; then
|
||||
echo "ERROR: 未找到可执行的 JDK。请安装 openjdk-8-jdk,或设定 JAVA_HOME / ELEVATOR_USE_ENV_JAVA=1 ./run.sh(使用 Conda 等当前环境)。" >&2
|
||||
exit 1
|
||||
fi
|
||||
JAVA="${JAVA_HOME}/bin/java"
|
||||
OPEN_FLAGS=()
|
||||
while IFS= read -r line; do
|
||||
[[ -n "$line" ]] && OPEN_FLAGS+=("$line")
|
||||
done < <(_jdk8_open_flags "$JAVA")
|
||||
|
||||
# 同 v1:由 redis-override.properties 合并出 SPRING_APPLICATION_JSON。
|
||||
if ! command -v python3 >/dev/null 2>&1; then
|
||||
echo "需要 python3(deploy/merge-redis-json.sh)。请安装 python3。" >&2
|
||||
exit 1
|
||||
fi
|
||||
MERGE="$(cd "$(dirname "$0")" && pwd)/../merge-redis-json.sh"
|
||||
if [[ ! -x "$MERGE" ]]; then
|
||||
chmod +x "$MERGE" 2>/dev/null || true
|
||||
fi
|
||||
export SPRING_APPLICATION_JSON="$("$MERGE" "$PWD/redis-override.properties")"
|
||||
# shellcheck disable=SC2086
|
||||
exec "$JAVA" "${OPEN_FLAGS[@]}" ${ELEVATOR_JAVA_OPTS:-} -jar "$JAR" \
|
||||
--spring.config.location=file:./application.properties,file:./redis-override.properties
|
||||
Reference in New Issue
Block a user