信创环境适配

信创环境适配

此次适配的服务器为麒麟v10,数据库使用人大金仓,中间件为tonweb7



前言

此次适配针对某银行做poc,根据客户提出的应用需求来验证建议的方案是否可行,为客户确定合适的服务产品、系统;完成对指定服务器环境以及中间件、数据库的兼容

针对Kingbase替换主要适配的组件有nacos、activit7、xxl-job


一、环境准备

Kylin_v10安装:
https://blog.csdn.net/qq_40220309/article/details/114135304

Kingbase安装:
Linux:https://blog.csdn.net/yang_z_1/article/details/123252832
Windows:https://blog.csdn.net/qq_25094817/article/details/122807581

Jdk1.8安装:
https://blog.csdn.net/weixin_56921038/article/details/123726655

Tongweb7安装:
https://blog.csdn.net/peacezhi/article/details/121415348

二、组件适配Kingbase

Nacos

下文中提到的source文件夹是我用来存放已经下载好的nacos、activit7源码,根据需求前往GitHub下载指定版本

  1. 打开source文件夹下nacos项目(此版本为2.0.1如有其它版本需求,下载指定版本源码
  2. 修改nacos源码引入驱动依赖(若使用source目录下提供nacos只需进行2.3的操作)
  3. 引入驱动依赖(根目录pom.xml)
    kingbase8.6.0的jar包需自行下载,maven仓库没有
<kingbase-connector-java.version>8.6.0</kingbase-connector-java.version>
<dependency>
    <groupId>com.kingbase</groupId>
    <artifactId>kingbase8</artifactId>
    <version>${kingbase-connector-java.version}</version>
</dependency>
  1. 修改nacos-config得pom.xml文件
<dependency>
    <groupId>com.kingbase</groupId>
    <artifactId>kingbase8</artifactId>
</dependency>
  1. 修改nacos-console模块的application.properties
#人大金仓
db.num=1
db.jdbcDriverName=com.kingbase8.Driver
db.url.0=jdbc:kingbase8://192.168.10.130:54321/yu_all?currentSchema=nacos_config_2.0.1
db.user=system
db.password=nkqlhhc
  1. nacos-config模块添加属性
/**
 * 数据库驱动
 * 增加对人大金仓数据库的支持
 */
private String jdbcDriverName;
public String getJdbcDriverName() {
    return jdbcDriverName;
}
public void setJdbcDriverName(String jdbcDriverName) {
    this.jdbcDriverName = jdbcDriverName;
}

为HikariDataSource对象指定驱动名称,调用setDriverClassName方法。改动见下图:
HikariDataSource

  1. 改动完成进入源代码目录,执行构建
mvn -Prelease-nacos -Dmaven.test.skip=true -Dpmd.skip=true -Dcheckstyle.skip=true  clean install -U
# 如果遇到异常使用一下命令
mvn -Prelease-nacos -Dmaven.test.skip=true -Dpmd.skip=true -Dcheckstyle.skip=true  -Drat.numUnapprovedLicenses=100  clean install -U
  1. 查看构建包
    构建成功后,进入源代码目录distribution/target/nacos-server-2.0.1 下的 nacos 文件夹 就是最终的输出物
    nacos-server-2.0.1-SNAPSHOT.tar.gz 是linux环境的压缩包
    nacos-server-2.0.1-SNAPSHOT.zip 是windows环境的压缩包
  2. 启动nacos测试

Activiti7

Activiti7默认不支持kingbase,不过想使用kingbase做数据源需修改activiti源码生成新的activiti-engin.jar包替换原路径下(org\activiti\activiti-engine\7.0.0.SR1)中activiti-engin.jar;7.0.0.SR1版本的相关jar包已调整好在source文件里,替换即可使用;

  1. 下载activiti7源码 https://github.com/Activiti/Activiti
  2. 修改org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl,新增成员变量kingbase如下图所示
    ProcessEngineConfigurationImpl
  3. 调整getDefaultDatabaseTypeMappings()方法如下图所示:
    getDefaultDatabaseTypeMappings()
  4. 修改org.activiti.engine.impl.db.DbSqlSessionFactory
    调整initBulkInsertEnabledMap(String databaseType)方法如下如所示:
    initBulkInsertEnabledMap
  5. 修改org.activiti.engine.impl.db.DbSqlSessionFactory
    调整initBulkInsertEnabledMap(String databaseType)方法如下如所示:
    initBulkInsertEnabledMap
  6. 修改org.activiti.engine.impl.AbstractQuery addOrder(String column, String sortOrder, NullHandlingOnOrder nullHandlingOnOrder)调整如下:
    addOrder
  7. 增加kingbase数据库脚本(略,建议mysql生成表迁移到kingbase)
  8. package生成jar包(使用jdk11)

XxlJob

对XxlJob的兼容不完善,需在后续遇到问题再进行补充

  1. 新增kingbase数据源pom.mxl文件中增加kingbase依赖
<dependency>
    <groupId>com.kingbase</groupId>
    <artifactId>kingbase8</artifactId>
    <version>8.6.0</version>
</dependency>
  1. 调整不兼容Kingbase代码com.xxl.job.admin.controller. JobGroupControlle
    JobGroupControlle
  2. 调整不兼容Kingbase代码com.xxl.job.admin.dao.XxlJobRegistryDao
    XxlJobRegistryDao
  3. 调整不兼容Kingbase代码XxlJobRegistryDao
    1
    在这里插入图片描述

三、Tongweb7替换Tomcat

Java代码调整

注意:GateWay服务底层启动用的不是tomcat是netty需特殊处理

  1. 排除Spring默认的Tomcat
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 去除内嵌tomcat -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  1. 新增build指定打war包
<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <!--如果想在没有web.xml文件的情况下构建WAR,请设置为false-->
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>
  1. 重写启动类
public class SysApplication extends SpringBootServletInitializer {
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(SysApplication.class);
	}
	public static void main(String[] args) {
		SpringApplication.run(SysApplication.class, args);
	}
}
  1. 新增nacos配置(若无会导致tonweb上的服务无法注册到nacos)
@Configuration
public class NacosConfig implements ApplicationRunner {
	@Autowired(required = false)
	private NacosAutoServiceRegistration registration;
	@Value("${server.port}")
	Integer port;
		
	@Override
	public void run(ApplicationArguments args) throws Exception {
		if (registration != null && prot != null) {
			Integer tomcatPort = port;
			try{
				tomcatPort = new Integer(getTomcatPort());
			} catch(Exceprion e) {
				e.printStackTrace();
			}	

			registration.setPort(tomcatPort);
			registration.start();
		}
	}

	/** 获取外部tomcat端口 */
	public String getTomcatPort() throws Exception {
		MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
		Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"), Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
		return objectNames.iterator.next().getKeyProperty("port");
	}
}

Vue项目打包部署

  1. 运行npm run build打包
  2. 进入dist文件夹,运行jar -cvf dist.war *

Web容器下部署多个服务

如果想通过在一个TongWeb下部署多个服务,有两种方案

  1. 采用多通道结合多虚拟主机实现多服务部署
  2. 增加多个域(具体操作参考部署手册)

总结

本次适配或有许多不足,待后续补充

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值