当前位置: 首页 > news >正文

东方通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存储 什么是对象存储? 对象存储并没有向文件系统那样划分为元数据区域和数据区域,而是按照不同的对象进行存储,而且每个对象内部维护着元数据和数据区域。因此每个对象都有自己独立的管理格式。 对象存储优点&#xff1a…...

树莓派安装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算法的“普遍最优性”&#xff…...

‍️代码的华尔兹:在 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.前言 哈喽大家好吖,今天博主正式开始为大家分享数据库的学习&#xff…...

一款革命性的视频剪辑工具,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…...

VSCode + Cline + Codeium + OpenSpec + DeepSeek 完整配置指南

VSCode Cline Codeium OpenSpec DeepSeek 完整配置指南 📋 最终方案概述 组件用途费用VSCode代码编辑器免费Codeium (Windsurf)Tab 补全 生成注释免费ClineAI Agent(复杂任务、多文件操作)免费OpenSpec规范驱动开发(复杂功…...

BLE技术解析:物联网低功耗无线通信核心

1. BLE技术概述:物联网的无线连接基石蓝牙低功耗技术(Bluetooth Low Energy,简称BLE)自2010年作为蓝牙4.0核心规范的一部分推出以来,已成为物联网设备无线通信的事实标准。与经典蓝牙技术相比,BLE在保持相似…...

gogoclaw:基于文件与技能的自主智能体运行时设计与实践

1. 项目概述:一个以文件为基石的自主智能体运行时如果你和我一样,对市面上那些“黑盒”式的AI智能体框架感到厌倦,总觉得它们把太多逻辑和状态藏在运行时深处,调试和扩展起来像在拆盲盒,那么gogoclaw这个项目可能会让你…...

5大核心功能揭秘:GTA5线上小助手如何彻底改变你的洛圣都冒险体验

5大核心功能揭秘:GTA5线上小助手如何彻底改变你的洛圣都冒险体验 【免费下载链接】GTA5OnlineTools GTA5线上小助手 项目地址: https://gitcode.com/gh_mirrors/gt/GTA5OnlineTools 你是否厌倦了在GTA5线上模式中花费数小时完成重复任务?是否希望…...

基于Vue的纯前端的库存销售系统

🚀【开源】 基于Vue的纯前端的库存销售系统 项目地址:https://github.com/cuiyunhao-2026/warhouse-sales-management-system 这是基于art design pro模板的二次开发 模板地址:https://github.com/Daymychen/art-design-pro 你是否&#x…...

TINA-TI仿真实战:从运放振铃到电源设计的电路调试指南

1. 为什么我们需要TINA-TI仿真软件 作为一个在硬件设计领域摸爬滚打多年的工程师,我见过太多因为电路设计问题导致的返工案例。记得有一次,我们团队花了两周时间手工焊接的样机,上电后运放输出端出现了严重的振铃现象,不得不全部拆…...

Honey Select 2终极优化指南:HS2-HF Patch完整解决方案

Honey Select 2终极优化指南:HS2-HF Patch完整解决方案 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF Patch是专为《Honey Select 2》游戏设…...

【AI原生架构黄金法则】:SITS 2026现场实录的7条反直觉设计铁律(仅限首批参会专家内部流出)

AI原生应用架构设计:SITS 2026技术专家实战经验分享 更多请点击: https://intelliparadigm.com 第一章:SITS 2026现场共识与AI原生架构范式跃迁 在SITS 2026全球智能系统技术峰会上,来自37个国家的架构师、AI平台工程师与标准化组…...

从CMake报错到编译成功:一站式解决absl依赖配置难题

1. 当CMake突然报错:absl依赖缺失的紧急处理 第一次看到这个报错时,我正赶着在截止日期前完成gRPC服务的部署。控制台突然弹出的红色错误让我心头一紧:"Could not find a package configuration file provided by absl"。这种依赖缺…...

5分钟快速上手:智能象棋AI助手的完整使用教程

5分钟快速上手:智能象棋AI助手的完整使用教程 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi Vin象棋是一款基于YOLOv5深度学习的开源免费中国…...