1 前言

此版本将seata访问控制台移动到seata-namingserver中,所以如果需要访问控制台,需要先将seata-namingserver启动,然后将seata-server的注册中心配置seata,并配置注册中心信息。支持多注册中心用,分割即可。如下图:

2 问题发现

按照官方文档,说明先将seata-namingserver启动,然后修改seata-server/config/application.yml的注册中心为seata,并启动seata-server服务。服务启动均正常,占用了8081、7091、8091三个端口,但是通过浏览器访问ip:8081返回404。

3 发现问题所在

拉下源码分析发现,控制台的相应的模块位于console下,打包之后的console.jar包应该是会存在前端代码的。通过分析console模块下的pom.xml文件的编译打包部分发现,前端代码打包后应位于jar包中resource/static下。然后我将seata-namingserver/lib/seata-console-2.4.0.jar包解压缩查看之后发现resource/static目录下仅有一个图标文件,并没有别的前端相关代码。相同的方法查看seata-console-2.3.0.jar包中却存在前端代码。因此更加验证我的猜想。

4 解决

既然发现了问题,解决起来就很简单了。

首先,下载seata2.4.0的源码。

第二,进入console/src/resource/static/console-fe目录,打包编译前端项目。

打包的方式最好是使用cnpm,我用yarn 以及 npm都失败。

打包步骤:

1、先看node-sass版本,需要使用对应版本的node,我这里使用的node版本是20.9.0

2、安装cnpm

npm install -g cnpm --registry=https://registry.npmmirror.com

3、安装依赖

cnpm install

4、打包编译

cnpm run build

这里还给你留了一个坑:src/reducers/locale.ts这个模块中需要用到alifd/next模块,但是package.json中并没有引入@alifd/next相关依赖,所以需要将package.json中添加上@alifd/next相关依赖后。重新运行cnpm run build后打包成功。

第三,将seata-namingserver/lib/seata-console-2.4.0.jar解压缩得到seata-console-2.4.0目录。

第四,将第二步中的产生的dist文件夹下的所有文件复制到第三步解压后的seata-console-2.4.0/resource/static目录下。

第五,重新将seata-console-2.4.0目录打包为jar包。

jar cvf seata-console-2.4.0.jar -C seata-console-2.4.0/ .

最后,将打包完的seata-console-2.4.0.jar替换到seata-namingserver/lib下即可解决。

5 解决

这时候需要先启动运行seata-namingserver,然后在启动seata-server之后。通过ip:8081可以正常访问。

这里还给你留了一个坑:访问ip:8081并登录后显示接口404。这是因为源码中有配置访问接口有前缀/api,所以需要在seata-namingsercer/config/application.yml配置server.servlet.context-path: /api。然后需要访问ip:8081/api访问。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐