当前位置: 首页 > 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部署项目的经过,为自己记录,也希望对其他小伙伴有用!!!

http://www.lryc.cn/news/482051.html

相关文章:

  • ceph介绍和搭建
  • 树莓派安装FreeSWITCH
  • OpenSSL 生成根证书、中间证书和网站证书
  • MySQL核心业务大表归档过程
  • dapp获取钱包地址,及签名
  • 探索Dijkstra算法的普遍最优性:从经典算法到最新学术突破
  • ‍️代码的华尔兹:在 Makefile 的指尖上舞动自动化的诗篇
  • 函数式编程Stream流(通俗易懂!!!)
  • 数据分析:转录组差异fgsea富集分析
  • 在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
  • AI笔筒操作说明及应用场景
  • Android自启动管控
  • 把握鸿蒙生态崛起的机遇:开发者视角的探讨
  • MySQL初学之旅(1)配置与基础操作
  • 一款革命性的视频剪辑工具,AI剪辑新纪元:Clapper
  • HTML 区块
  • 复杂度的讲解
  • [ Linux 命令基础 2 ] Linux 命令详解-系统管理命令
  • 使用docker部署Prometheus和Grafana去监控mysql和redis
  • 日志管理 | Log360 实现PCI DSS v4.0数据安全合规要求
  • JAVA中的string和stringbuffer
  • 轻型民用无人驾驶航空器安全操控------理论考试多旋翼部分笔记
  • 计算用户订购率梧桐数据库和oracle数据库sql分析
  • 通过DNS服务器架构解释DNS请求过程
  • OKG Research:用户意图驱动的Web3应用变革
  • hbase 工具类
  • 会议直击|美格智能受邀出席第三届无锡智能网联汽车生态大会,共筑汽车产业新质生产力
  • 在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化的教程
  • Android13 系统/用户证书安装相关分析总结(三) 增加安装系统证书的接口遇到的问题和坑
  • 【C++ 算法进阶】算法提升十三