springboot项目东方通TongWeb改造适配

07-12 1087阅读

springboot项目东方通TongWeb改造适配

一、背景

在全球化背景下,为确保国家安全、推动产业升级、满足市场需求和技术进步,国产化成为国家发展战略的重要组成部分,旨在打造一个更加安全、自主、可控的信息技术生态环境。本文章的背景就是客户企业响应国产化政策,要求系统能够适配东方通,在东方通TongWeb上部署运行。

二、改造项目介绍

本文章改造适配的项目是使用的前后端分离的框架,只记录后端springboot项目的改造适配的过程。改造的项目使用的springboot是2.4.3版本。项目在生产环境都是打包成jar包,用jar包部署运行。

springboot项目东方通TongWeb改造适配

springboot项目东方通TongWeb改造适配

三、适配东方通

本文章记录的适配方式有两种,一种是嵌入式适配,在pom.xml中直接配置依赖,嵌入内置TongWeb容器,替代Tomcat,适配完成后打包成可执行 jar 包,按照原来的jar包方式部署运行。另外一种是打包成可执行 war 包,使用TongWeb进行安装部署。

本次项目适配版本:

tongweb嵌入式版本是TongWeb7.0.E.6_P8。

TongWeb企业版的版本是TongWeb7.0.4.9_M3。

1.嵌入式适配

根据东方通官方文档介绍,TongWeb 嵌入式版 Web 容器需要结合 Spring Boot 框架应用,TongWeb 应用服务器运行所需的 jar 资源包,可以根据不同的场景进行引入分别支持以下四种方式引入容器依赖 jar 资源包。

• 方式一:pom.xml中直接配置依赖

• 方式二:嵌入可执行 jar 包

• 方式三:嵌入可执行 war 包

• 方式四:作为外部 jar 包

本次采用的适配方式是方式一,在pom.xml中直接配置依赖。

1.1 pom.xml中直接配置依赖

在springboot项目的pom.xml中配置tongweb-spring-boot-starter依赖,同时排除掉springboot自带的 tomcat 的依赖。(在前面改造项目介绍时提到了springboot的版本,是因为这种方式不同的springboot版本引入相关依赖的版本不同)

springboot项目东方通TongWeb改造适配

springboot项目东方通TongWeb改造适配


  org.springframework.boot
  spring-boot-starter-web
  
  	
  		org.springframework.boot
  		spring-boot-starter-tomcat
  	
  



  com.tongweb.springboot
  tongweb-spring-boot-starter-2.x
  7.0.E.6_P8

如果在pom.xml中单独引入了tomcat相关的依赖,也需要去掉。比如下图的就是本次项目中的tomcat相关依赖,全部注释掉了。

springboot项目东方通TongWeb改造适配

1.2 修改Server容器相关配置

在application.properties中配置的server相关参数都是tomcat的,使用tongweb替换了tomcat后,相关的server参数需要修改。

原来的参数配置:

springboot项目东方通TongWeb改造适配

########################Spring Server容器相关配置(默认使用Tomcat作为server)
#编码格式
server.tomcat.uri-encoding = UTF-8
#最小备用线程数
server.tomcat.threads.min-spare = 250
#可创建的最大线程数。超过这个请求数后,进入排队队列(服务器CUP核心数的200~250倍之间)
server.tomcat.threads.max = 2000
#等待队列数,上面配置超出后的请求暂时放在这里
server.tomcat.accept-count = 1000
#同一时间能接受的最大连接数(>可创建的最大线程数+等待队列数)
server.tomcat.max-connections = 3500
#请求等待超时时间5s
server.tomcat.connection-timeout = 500000ms
#取消tomcat上传文件大小限制
server.tomcat.max-swallow-size = -1
server.tomcat.max-http-form-post-size = -1

修改后的参数配置:

springboot项目东方通TongWeb改造适配

########################Spring Server容器相关配置(使用TongWeb作为server)
#设定URI的解码字符集
server.tongweb.uri-encoding = UTF-8
#最小工作线程,连接池中应用保护的最小空余线路数
server.tongweb.min-spare-threads = 250
#设置tongweb的最大工作线程数
server.tongweb.max-threads=2000
#最大等待队列大小
server.tongweb.accept-count = 1000
#设置最大连接数
server.tongweb.max-connections = 3500
#连接超时时间 (毫秒) 使用值 -1 表示没有(即无限)超时。 Spring Boot 1.x与Spring Boot 2.x 中涉及时间单位配置入参单位均不同,
# Spring Boot 2.x支持ms、s、m、h、d等时间单位,默认ms,Spring Boot仅支持Int或Long型数值 默认值:20000
server.tongweb.connection-timeout= 500000ms
#请求体能吞下的最大数量
server.tongweb.max-swallow-size = -1
#最大post请求大小,单位为KB、MB。 如果不加单位默认采用Byte作为单位,
# 例: server.tongweb.max-http-post-size=1,表示1字节。 不配置该参数表示不限
#server.tongweb.max-http-post-size=2MB

1.3 配置license相关参数

嵌入式版 TongWeb 启动需依赖授权文件校验,申领授权文件(license.dat)需要联系东方通销售人员。嵌入式版 TongWeb 支持两种授权认证方式,分别是“本地认证”和“远程认证”。

本地认证:

通过读取本地的 license.dat 文件进行授权认证。

支持“通过配置文件配置”和“通过启动参数配置”两种方式。

远程认证:

License Server 远程认证,是通过远程搭建的 License Server 服务进行远程授权认证。

支持“通过配置文件配置”和“通过启动参数配置”两种方式。

几种认证方式详细可以查看东方通官方文档,本项目适配使用的是本地认证,通过配置文件配置的方式。在application.properties文件中添加如下配置。

springboot项目东方通TongWeb改造适配

#东方通license相关
server.tongweb.license.type = file
server.tongweb.license.path = C:\\tongweb\\license.dat

将以上几个步骤的事情做完,第一种嵌入式适配基本上大功告成!!

2.打包成war包在TongWeb企业版部署web应用

以TongWeb企业版部署war包的这种方式适配,就不需要在pom.xml中引入tongweb相关的依赖了。TongWeb企业版已经有相关的类,如果再引入相关依赖war应用包里的WEB-INF/lib目录下有tongweb相关的jar,这样导致TongWeb企业版的类调用TongWeb嵌入版的类来解析TongWeb企业版的conf/default-web.xml文件,这样部署的时候会有如下报错。

springboot项目东方通TongWeb改造适配

2.1 pom.xml中排除tomcat配置依赖并修改打包方式

在springboot项目的pom.xml中排除掉springboot自带的 tomcat 的依赖。

springboot项目东方通TongWeb改造适配


  org.springframework.boot
  spring-boot-starter-web
  
  	
  		org.springframework.boot
  		spring-boot-starter-tomcat
  	
  

如果在pom.xml中单独引入了tomcat相关的依赖,也需要去掉。比如下图的就是本次项目中的tomcat相关依赖,全部注释掉了。

springboot项目东方通TongWeb改造适配

在pom.xml中修改项目的打包方式为war包。

war

2.2 增加类 ServletInitializer

新建一个ServletInitializer类继承SpringBootServletInitializer,放在启动类同目录。

springboot项目东方通TongWeb改造适配

springboot项目东方通TongWeb改造适配

package com.ty;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(IntePDMApplication.class);
	}
}

还有种方式可以启动类直接继承SpringBootServletInitializer,重写对应的configure方法。

2.3 修改Server容器相关配置

和第一种嵌入式的一样,可参考前面的第一种方式的内容,这里不再赘述。

2.4 配置license相关参数

和第一种嵌入式的一样,可参考前面的第一种方式的内容,这里不再赘述。

2.5 修改server.servlet.context-path

在application.properties文件中注释掉server.servlet.context-path配置。(这里如果不注释掉,在TongWeb企业版中部署成功了,访问不到对应接口,在TongWeb企业版部署应用的时候可以在页面配置对应的前缀)

springboot项目东方通TongWeb改造适配

将以上几个步骤的事情做完,第二种打包成war包在TongWeb企业版部署web应用的适配基本上大功告成!!

四、小结

以上两种方式的适配改造步骤仅供参考,具体方式可以根据实际项目适配的情况选择。其中还有很多可以优化的地方,欢迎指教。

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]