服务端

创建日期:2024-06-21
更新日期:2024-12-05

编译运行

1、使用idea导入pom.xml,等待导入完成。

2、右侧maven面板,找到BladeX项目,依次运行clean、compile、package、install,将BladeX安装到maven仓库中。

3、在nacos中添加配置。(注意:bladex需要nacos 2.x版本。)

打开http://127.0.0.1:8848/nacos/,用户名:nacos,密码:nacos。

创建blade.yaml,导入doc/nacos/blade.yaml。

创建blade-dev.yaml,导入doc/nacos/blade-dev.yaml。

创建blade-flow-dev.yaml,导入blade-ops/blade-flow/doc/nacos/blade-flow-dev.yaml。

4、导入mysql数据库。

创建数据库bladex和bladex_boot,导入doc/sql/mysql/bladex-saber-mysql.sql。

5、依次运行项目:blade-auth、blade-service/blade-system、blade-service/blade-user、blade-gateway。

部署运行

@echo off

@chcp 65001

title blade-system

cd bladex && java -Xms256m -Xmx256m -jar -Dfile.encoding=utf-8 blade-system.jar --spring.profiles.active=dev

pause

常用模块

工作台/通知公告:blade-service/blade-desk

工作台/通知公告:blade-service/blade-demo

个人信息/上传头像:blade-ops/blade-resource,需要9000端口

我的事务:blade-ops/blade-flow,需要导入doc/sql/mysql/bladex-flowable-mysql.sql到bladex_flow表。

系统监控/接口文档:blade-ops/blade-swagger

系统监控/服务治理:blade-ops/blade-admin,账号:blade、密码:blade。

系统监控/ELK监控:

系统监控/Zipkin监控:

系统监控/Turbine监控:

系统监控/Sentinel管理:

系统监控/Elasticsearch管理:

系统监控/日志管理:blade-ops/ blade-log

研发工具:blade-ops/blade-develop

流程管理/模型管理/创建:blade-ops/blade-flow-design

报表管理/报表配置:blade-ops/blade-report

资源管理/任务调度:blade-ops/blade-xxljob-admin,账号:admin,密码:123456

常见问题

1、访问:http:~/~/localhost:18000/时,报错:Access to XMLHttpRequest at 'http:~/~/localhost/blade-auth/oauth/token' from origin 'http:~/~/localhost:18000' has been blocked by CORS policy: Request header field request-origion is not allowed by Access-Control-Allow-Headers in preflight response。

编辑 blade-gateway\src\main\java\org\springblade\gateway\config\RouterFunctionConfiguration.java ,在ALLOWED_HEADERS中添加缺少的字段:request-origion。

2、如何启用nacos多命名空间支持,开发时读取本地配置文件。

编辑blade-common\src\main\java\org\springblade\common\launch\LauncherServiceImpl.java,添加以下代码:

package org.springblade.common.launch;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springblade.common.constant.LauncherConstant;

import org.springblade.core.auto.service.AutoService;

import org.springblade.core.launch.service.LauncherService;

import org.springblade.core.launch.utils.PropsUtil;

import org.springframework.boot.builder.SpringApplicationBuilder;

import java.io.File;

import java.io.FileInputStream;

import java.util.Properties;

@AutoService(LauncherService.class)

public class LauncherServiceImpl implements LauncherService {

       private final static Logger logger = LoggerFactory.getLogger("LauncherServiceImpl");

       @Override

       public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) {

              Properties props = System.getProperties();

              // 获取用户配置

              String userHome = System.getProperty("user.home");

              logger.info("user.home: " + userHome);

              String nacosConfigPath = userHome + "/nacos/nacos.properties";

              String nacosAddr = LauncherConstant.nacosAddr(profile);

              String nacosNamespace = "";

              File file = new File(nacosConfigPath);

              if (file.exists()) {

                     try {

                            FileInputStream stream = new FileInputStream(nacosConfigPath);

                            Properties properties = new Properties();

                            properties.load(stream);

                            stream.close();

                            nacosAddr = properties.getProperty("addr");

                            nacosNamespace = properties.getProperty("namespace");

                            logger.info("find nacos config: " + nacosConfigPath);

                            logger.info("nacosAddr: " + nacosAddr);

                            logger.info("nacosNamespace: " + nacosNamespace);

                     } catch (Exception e) {

                            logger.warn(e.getMessage());

                     }

              }

              // 通用注册

              PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", nacosAddr);

              PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.namespace", nacosNamespace);

              PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", nacosAddr);

              PropsUtil.setProperty(props, "spring.cloud.nacos.config.namespace", nacosNamespace);

              PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile));

              PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile));

       }

}

在home主目录(例如你的电脑的用户名是User,那么Windows上是C:\Users\{User}\)新建nacos文件夹,然后在nacos文件夹中新建nacos.properties配置文件,写入以下内容。

# nacos地址

addr=192.168.23.122:8848

# 你新建的nacos命名空间ID (不是命名空间名称)

namespace=jgpt

这样,启动bladex服务端,会自动检查配置文件(C:\Users\{User}\nacos\nacos.properties)是否存在,存在则使用本地配置,不存在则使用bladex\blade-common\src\main\java\org\springblade\common\constant\LauncherConstant.java中定义的配置。这样,可以避免修改LauncherConstant.java后,每次都需要重新编译整个服务端。

3、有的用户登录或点击某个菜单,会退出返回登录页面,提示未授权。

有些菜单设定只有超级管理员才能访问,如果不需要这么安全

全局替换

@PreAuth(RoleConstant.HAS_ROLE_ADMIN

~/~/@PreAuth(RoleConstant.HAS_ROLE_ADMIN

参考:https://sns.bladex.vip/q-1033.html

4、Error updating database. Cause: org.postgresql.util.PSQLException: ERROR: relation "device_grid" does not exist on node1。

数据表不存在,实体类是DeviceGrid,但是数据表是DEV_DEVICE_GRID,在实体类上加上@TableName("DEV_DEVICE_GRID")即可。