东方通TongWeb替换Tomcat的踩坑记录
一、背景
由于信创需要,原来项目的用到的一些中间件、软件都要逐步替换为国产品牌,决定先从web容器入手,将Tomcat替换掉。在网上搜了一些资料,结合项目当前情况,考虑在金蝶AAS和东方通TongWeb里面选择,后又发现好像AAS的资料好像较少,所以决定先选择TongWeb,以后有需要再研究AAS算了。
二、环境
1、现状:代码:SpringMVC+Hibernate;web容器:Tomcat7;JDK:1.7
2、测试环境:
本地开发环境:idea2021.2(东方通给的idea的TongWeb插件只支持到这个版本,是否有更新的版本未知)、JDK1.7
服务器环境:麒麟服务器操作系统V10、JDK1.8(系统己自带安装,试过发现可以跑项目,就没有换了)
三、关于TongWeb的安装
1、本地开发我是根据东方通的使用手册,下载了对应版本的idea,然后安装了插件,尝试在本地先运行项目;
2、服务器上安装TongWeb资料很多,可以搜一下按步骤操作就行了。基本上也就是解压缩,然后执行运行脚本就行了。
注意的一点是记得上传tongweb的licence.dat文件到安装的根目录,这个文件是东方通客服发的试用证书,也就一个月的有效期。
四、替换之路
一开始考虑直接将本地项目打成war包,利用TongWeb的控制台,上传到服务器上部署,结果当然是部署失败,其实TongWeb这里的部署,应该就是上传文件,然后执行启动脚本,从日志来看,提示是少了一些类文件,没办法,只能先尝试本地启动,解决异常。
1、idea安装tongweb插件
在idea中配置好tongweb的插件(具体配置过程就不说了,tongweb的插件在其安装文件目录里面,只需要用对应版本的idea就行了,高版本的idea插件是不兼容的,不能安装);


2、解决本地运行的异常
本地运行项目可以参考之前在tomat上部署一样,启动后,主要是一些java.lang.NoClassDefFoundError 异常,起初,一看这些异常,以为是部署不正确,导致项目的jar包没有正常部署过去,又以为是jar包冲突了,在这上面折腾了一段时间,后面看到一篇文章:java.lang.NoClassDefFoundError:org/apache/struts2/views/jsp/ui/AbstractUITag_tongweb部署报错classnotfoundexception:org.apache.strut-CSDN博客
这个是解决tomcat迁移到weblogic上的问题,从中受到了启发,才想起来可能是容器无法解析、编译JSP的原因,尝试从这方面入手。根据错误提示,找到了对应的jar包,复制到tongweb的安装目录下 \lib\endorsed 里面,重新启动,没想到前面的异常没有了,换了缺少一个其他的类的异常了,发现有用以后,其实就把问题变成找到对应的jar包的问题了。直到把启动阶段的异常解决,能正常启动,登录、访问系统又发现还有一些其他的类找不到的异常,又添加一些其他jar包,最终才正常部署系统,并使用功能。
碰到的一些异常包括:
(1)java.lang.NoClassDefFoundError:org/apache/struts2/views/jsp/ui/AbstractUITag
添加了struts2的相关jar包解决;

(2)java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/DynamicAttributes
添加了servlet相关的jar包解决;

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String
这个异常是servlet-api这个jar包版本过低,如果出现这个异常,需要更换更高一点的版本才行,参考:错误:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String-CSDN博客
(3)java.lang.ClassNotFoundException: org.apache.el.ExpressionFactoryImpl
缺少EL表达式相关的jar包,因为老项目中用到了el表达式,所以需要这块相关jar包支持

最后将各种异常处理完以后,系统部署成功,访问系统各项功能基本正常,初步完成。再总的列一下额外添加的jar包:

3、添加Jar包注意事项
(1)、找的jar包的版本要与JDK版本相匹配,不要一味找最新的,最新的jar可能需要更高版本的JDK才能运行,在低版本JDK上运行 会出现 Unsupported Java Version ,has been compiled by a more recent version of the 错误;
(2)、如果出现 java.lang.NoSuchMethodError 这类错误,那应该是jar包版本老了,没有新的方法,需要找较高版本的jar包;
(3)每个项目所需要的jar包不一定一样,需要参考具体异常信息补充jar包,不要一股脑的按我前面所列的jar包添加;
(4)个人经验:老项目的一些jar包比较难找,我是利用maven添加指定版本的pom依赖以后下载到本地仓库中,然后再在本地仓库中去找jar包,这样省时省力;
4、服务器部署运行
需要同样的将额外添加的jar包上传到服务器的TongWeb安装位置,对应的目录里面,然后通过TongWeb的管理控制台以war包形式或者指定项目运行目录的方式部署好运行就可以了,正常启动后,能在管理界面的应用管理功能中看到项目状态是己部署;
以上是个人使用Tongweb替代Tomcat部署项目的经过,为自己记录,也希望对其他小伙伴有用!!!
相关文章:
东方通TongWeb替换Tomcat的踩坑记录
一、背景 由于信创需要,原来项目的用到的一些中间件、软件都要逐步替换为国产品牌,决定先从web容器入手,将Tomcat替换掉。在网上搜了一些资料,结合项目当前情况,考虑在金蝶AAS和东方通TongWeb里面选择,后又…...
ceph介绍和搭建
1 为什么要使用ceph存储 什么是对象存储? 对象存储并没有向文件系统那样划分为元数据区域和数据区域,而是按照不同的对象进行存储,而且每个对象内部维护着元数据和数据区域。因此每个对象都有自己独立的管理格式。 对象存储优点:…...
树莓派安装FreeSWITCH
1、下载相关资源: # 假设所有资源都下载到/opt/目录下 cd /opt # 下载FreeSWITCH源码 git clone https://github.com/signalwire/freeswitch # 下载libks源码 git clone https://github.com/signalwire/libks # 下载sofia-sip源码 git clone https://github.com/fr…...
OpenSSL 生成根证书、中间证书和网站证书
OpenSSL 生成根证书、中间证书和网站证书 一、生成根证书(ChinaRootCA)二、生成中间 CA(GuangDongCA)三、生成网站证书(gdzwfw) 一、生成根证书(ChinaRootCA) 创建私钥: …...
MySQL核心业务大表归档过程
记录一下2年前的MySQL大表的归档,当时刚到公司,发现MySQL的业务核心库,超过亿条的有7张表,最大的表有9亿多条,有37张表超过5百万条,部分表行数如下: 在测试的MySQL环境 : pt-archiv…...
dapp获取钱包地址,及签名
npm install ethersimport {ethers} from ethers const accounts await ethereum.request({method: eth_requestAccounts}); // 获取钱包地址 this.form.address accounts[0] console.log("accounts:" this.address)const provider new ethers.BrowserProvider(…...
探索Dijkstra算法的普遍最优性:从经典算法到最新学术突破
引言 在计算机科学中,Dijkstra算法是解决单源最短路径问题的经典算法,尤其在地图导航、网络通信和机器人路径规划等领域有着广泛应用。近期,学术界在此算法上取得了重大突破:研究人员证明了Dijkstra算法的“普遍最优性”ÿ…...
️代码的华尔兹:在 Makefile 的指尖上舞动自动化的诗篇
文章目录 😶🌫️😶🌫️😶🌫️背景——一个优秀工程师必备技能😶🌫️😶🌫️😶🌫️一、🤩🤩快速了解…...
函数式编程Stream流(通俗易懂!!!)
目录 1.Lambda表达式 1.1 基本用法 1.2 省略规则 2.Stream流 2.1 常规操作 2.1.1 创建流 2.1.2 中间操作 filter map distinct sorted limit 编辑skip flatMap 2.1.3 终结操作 foreach count max&min collect anyMatch allMatch noneMatch …...
数据分析:转录组差异fgsea富集分析
文章目录 介绍加载R包数据链接导入数据数据预处理DE testing: 2BP vs no-BP比较limma-voomLoad steroid dataIn No-BP patientsIn 2BP patientsCompare gene expression vs bacterial mass其他系统信息介绍 转录组差异fgsea富集分析是一种基于基因集的富集分析方法,它关注的是…...
在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
在Django中可以使用CKEditor4和CKEditor5两个版本,分别对应软件包django-ckeditor和django-ckeditor-5。原来使用的是CKEditor4,python manager.py makemigrations时总是提示CKEditor4有安全风险,建议升级到CKEditor5。故卸载了CKEditor4&…...
AI笔筒操作说明及应用场景
AI笔筒由来: 在快节奏的现代办公环境中,我们一直在寻找既能提升效率、增添便利,又能融入企业文化、展现个人品味的桌面伙伴。为此,我们特推出专为追求卓越、注重细节的您设计的AI笔筒礼品版,它集高科技与实用性于一身…...
Android自启动管控
1. 自启动管控需求来源 自启动、关联启动、交叉启动、推送启动等现象的泛滥除了对个人信息保护带来隐患外,还会导致占用过多的系统CPU和内存资源,造成系统卡顿、发热、电池消耗过快;还可能引入一些包含“恶意代码”的进程在后台隐蔽启动&…...
把握鸿蒙生态崛起的机遇:开发者视角的探讨
大家好,我是程序员小羊! 前言: 近年来,鸿蒙系统(HarmonyOS)的发展备受瞩目。随着其在智能手机、智能穿戴、车载系统和智能家居等领域的广泛应用,鸿蒙系统正逐渐形成与安卓、iOS并列的三足鼎立…...
MySQL初学之旅(1)配置与基础操作
目录 1.前言 2.正文 2.1数据库的发展历程 2.2数据库的基础操作 2.2.1启动服务 2.2.2创建与删除数据库 2.2.3数据类型 2.2.4创建表与删除表 2.3MySQL Workbench基础使用简介 3.小结 1.前言 哈喽大家好吖,今天博主正式开始为大家分享数据库的学习ÿ…...
一款革命性的视频剪辑工具,AI剪辑新纪元:Clapper
如果说AI视频剪辑工具哪家强?还真想不出有什么让人眼前一亮的AI视频剪辑应用。 毕竟随着AI技术的发展越来越快,各种AI应用如雨后春笋般涌现,然而,真正能够在视频剪辑领域脱颖而出的工具却寥寥无几。 今天我要介绍的 Clapper 就是…...
HTML 区块
HTML 区块 HTML(HyperText Markup Language)是构建网页的标准语言,它定义了网页的结构和内容。在HTML中,区块元素是指那些能够定义较大块状结构的元素,比如段落、标题、列表、表格和 divis 等。这些元素通常对页面的布…...
复杂度的讲解
数据结构可以简单理解为在内存中管理数据 它具有速度快 带电存储的特点(临时存储) 如何衡量一个算法的好坏 因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。 时间复杂度主要衡量一个算…...
[ Linux 命令基础 2 ] Linux 命令详解-系统管理命令
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
使用docker部署Prometheus和Grafana去监控mysql和redis
自动化性能监控系统安装部署 相关工具的安装部署 服务工具分配 服务器工具端口10.0.20.9grafana300010.0.20.9prometheus909010.0.20.10mysql330610.0.20.10mysql-exporter910410.0.20.10redis330610.0.20.10redis_exporter9121 使用docker-compose安装prometheus 先拉取p…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...
