背景
一个基于若依单体架构的多模块 Maven
项目的国产化迁移适配,由于是客户的代码,我们不用关心具体的功能实现,直接来做迁移即可。实施时,按照我们总结的整改建议调整源码,具体迁移适配过程可参考本专栏的其他文章。
组件信息
组件 |
---|
操作系统:麒麟V10 |
CPU: HUAWEI, Kunpeng 920 |
数据库:达梦8 |
东方通:TongWeb7 |
JDK: 1.8.0_272 OpenJDK |
Openssl:1.1.1f |
反向代理:Nginx1.20.2 |
缓存服务:Redis6.2.6 |
Python: 3.7.9 |
系统环境
# 操作系统
[root@localhost ~]# uname -a
Linux localhost 4.19.90-24.4.v2101.ky10.aarch64 #1 SMP Mon May 24 14:45:37 CST 2021 aarch64 aarch64 aarch64 GNU/Linux
[root@localhost ~]# cat /proc/version
Linux version 4.19.90-24.4.v2101.ky10.aarch64 (KYLINSOFT@localhost.localdomain) (gcc version 7.3.0 (GCC)) #1 SMP Mon May 24 14:45:37 CST 2021
# CPU
[root@localhost ~]# cat /proc/cpuinfo
…
processor : 63
model name : HUAWEI,Kunpeng 920
BogoMIPS : 200.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm
CPU implementer : 0x48
CPU architecture: 8
CPU variant : 0x1
CPU part : 0xd01
CPU revision : 0
# 64核心
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | uniq | wc -l
64
总体步骤
-
项目结构
排除默认的Tomcat
打war包
重写启动类 -
数据库
修改数据库依赖
修改数据库连接配置(地址、端口、用户名、密码) -
其他
修改缓存连接配置(地址、端口、用户名、密码)
修改对象存储配置(地址、端口、桶、用户名、密码)
报错信息
在 Maven
打包( mvn clean package
)时(编译)遇到了以下错误:
[?[1;31mERROR?[m] Failed to execute goal ?[32morg.apache.maven.plugins:maven-compiler-plugin:3.1:compile?[m ?[1m(default-compile)?[m on project ?[36mtransfer-admin?[m: ?[1;31mCompilation failure?[m: Compilation
failure:
[?[1;31mERROR?[m] /D:/ResearchInstitute/Project/source/t-single/transfer_admin/src/main/java/com/t/ydl/common/util/EncryptUtil.java:[5,16] 找不到符号
[?[1;31mERROR?[m] 符号: 类 BASE64Decoder
[?[1;31mERROR?[m] 位置: 程序包 sun.misc
[?[1;31mERROR?[m] /D:/ResearchInstitute/Project/source/t-single/transfer_admin/src/main/java/com/t/ydl/common/util/EncryptUtil.java:[6,16] 找不到符号
[?[1;31mERROR?[m] 符号: 类 BASE64Encoder
[?[1;31mERROR?[m] 位置: 程序包 sun.misc
解决方法
JDK 1.8之后提供了 java.util.Base64.Decoder
和 java.util.Base64.Encoder
的 JDK
公共 API
,可代替 sun.misc.BASE64Decoder
和 sun.misc.BASE64Encoder
的 JDK
内部 API
,即需要根据新的 API
调整源码即可。
// 编码
return new BASE64Encoder().encode(encrypted);
改为:
return Base64.getEncoder().encodeToString(encrypted);
// 解码
byte[] base64Data = new BASE64Decoder().decodeBuffer(content);
改为:
byte[] base64Data = Base64.getDecoder().decode(content);
Note:也看到有使用以下方式解决的,不过我这里不生效。。
Ctrl+Alt+S File | Settings | Build, Execution, Deployment | Build Tools | Maven 配置 | Runner
If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!