首页 > Python资料 博客日记
springboot项目东方通TongWeb改造适配
2024-08-20 15:00:18Python资料围观144次
springboot项目东方通TongWeb改造适配
一、背景
在全球化背景下,为确保国家安全、推动产业升级、满足市场需求和技术进步,国产化成为国家发展战略的重要组成部分,旨在打造一个更加安全、自主、可控的信息技术生态环境。本文章的背景就是客户企业响应国产化政策,要求系统能够适配东方通,在东方通TongWeb上部署运行。
二、改造项目介绍
本文章改造适配的项目是使用的前后端分离的框架,只记录后端springboot项目的改造适配的过程。改造的项目使用的springboot是2.4.3版本。项目在生产环境都是打包成jar包,用jar包部署运行。
三、适配东方通
本文章记录的适配方式有两种,一种是嵌入式适配,在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自带的tomcat依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加tongweb-spring-boot-starter依赖 -->
<dependency>
<groupId>com.tongweb.springboot</groupId>
<artifactId>tongweb-spring-boot-starter-2.x</artifactId>
<version>7.0.E.6_P8</version>
</dependency>
如果在pom.xml中单独引入了tomcat相关的依赖,也需要去掉。比如下图的就是本次项目中的tomcat相关依赖,全部注释掉了。
1.2 修改Server容器相关配置
在application.properties中配置的server相关参数都是tomcat的,使用tongweb替换了tomcat后,相关的server参数需要修改。
原来的参数配置:
########################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
修改后的参数配置:
########################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文件中添加如下配置。
#东方通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文件,这样部署的时候会有如下报错。
2.1 pom.xml中排除tomcat配置依赖并修改打包方式
在springboot项目的pom.xml中排除掉springboot自带的 tomcat 的依赖。
<!-- 排除springboot自带的tomcat依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
如果在pom.xml中单独引入了tomcat相关的依赖,也需要去掉。比如下图的就是本次项目中的tomcat相关依赖,全部注释掉了。
在pom.xml中修改项目的打包方式为war包。
<packaging>war</packaging>
2.2 增加类 ServletInitializer
新建一个ServletInitializer类继承SpringBootServletInitializer,放在启动类同目录。
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企业版部署应用的时候可以在页面配置对应的前缀)
将以上几个步骤的事情做完,第二种打包成war包在TongWeb企业版部署web应用的适配基本上大功告成!!
四、小结
以上两种方式的适配改造步骤仅供参考,具体方式可以根据实际项目适配的情况选择。其中还有很多可以优化的地方,欢迎指教。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj