
在国产化替代的大潮下很多团队手里都捏着个“烫手山芋”应用已经在Tomcat上跑得好好的突然要求迁移到东方通TongWeb上。第一次接触这个国产Java中间件的人很容易下意识把它当成“另一个Tomcat”结果一上手就发现安装能过、部署就挂或者管理界面压根登不进去然后就开始怀疑人生。这篇文章就是给你把路铺平的基于我实际在Linux服务器上和本地Windows环境里折腾TongWeb的经历从下载、安装、启动、登录控制台到部署war包和静态HTML项目每一步都带界面细节和踩坑提醒目标是让你照着操作一遍就能跑通少走那些我走过的弯路。1. 先搞清楚:TongWeb和Tomcat到底什么关系很多第一次用TongWeb的人心里最大的疑惑就是这个。我最早也以为TongWeb不过是给Tomcat换了层皮、改了改logo实际用过之后才发现这个认知需要修正。1.1 它不是“国产Tomcat”而是完整的Java应用服务器TongWeb是东方通旗下的企业级Java中间件产品它确实支持Servlet规范、JSP规范所以你在Tomcat上写的Web应用、打的war包理论上都能在TongWeb上部署运行。但它的定位比Tomcat要高它是一套完整的Java EE应用服务器支持EJB、JMS、JTA、JNDI这些企业级规范。用大白话说Tomcat更像一个“轻型HTTP容器”只负责跑Web应用TongWeb则是一整套“企业级运行时环境”还能做集群、会话保持、数据源管理、应用隔离这类中间件的事。这对大多数用户来说意味着什么意味着你如果只是部署一个普通的Spring Boot项目或者一个纯静态页面TongWeb是“杀鸡用牛刀”但优势在于它的管理界面、部署方式、配置中心都和Tomcat原生体验完全不同有些地方甚至更方便。1.2 为什么大家都在迁向TongWeb一个很现实的原因是国产化替代的政策驱动金融、政务、电信这些行业现在对国产中间件的需求非常明确TongWeb是点名率最高的产品之一。另一个原因是它本身对企业级特性支持得比较完整特别是有技术服务体系兜底出了问题能找到原厂支持。所以现在的常态是新项目直接按TongWeb的标准来适配老项目则要做从Tomcat到TongWeb的迁移验证。搞清楚这个背景你就知道接下来这些安装和部署步骤不是冷门技能而是未来几年很多Java开发者的必修课。这也是我把整个流程整理出来的原因。2. 环境准备:JDK版本和系统要求先搞对安装TongWeb之前最大的坑反而不在TongWeb本身而在JDK版本。版本不匹配后面启动一定报错而且报错信息还特别容易误导人。2.1 JDK版本选择:1.8还是11以目前主流的TongWeb 7.0为例它分为多种版本其中企业版标准版支持JDK 1.8和JDK 11但不同小版本的支持情况有差异。我的实测经验是如果服务器原本的JDK是1.8那就别贪新鲜去装高版本TongWeb反过来如果JDK是11或17也要先确认你拿到的TongWeb安装包是否支持对应版本。怎么确认最简单的方法就是看安装包里的说明文档或者打开bin目录下的启动脚本看看里面的JAVA_HOME引用方式。我见过有人用JDK 17去启动TongWeb 7.0老版本结果启动脚本直接报UnsupportedClassVersionError然后跑来问是不是TongWeb坏了。实际上就是版本不兼容。建议优先使用JDK 1.8这是兼容性最稳妥的选择目前绝大多数信创项目也是这个配置。2.2 操作系统兼容性TongWeb对操作系统的兼容做得比较宽Windows、Linux、麒麟、统信UOS都有对应版本。但我个人的建议是如果要部署到生产环境优先用Linux如果只是本地学习试用Windows版本也能跑但要注意Windows下启动脚本是.batLinux下是.sh千万别搞混。另外Linux下最好用专门的用户来运行TongWeb不要直接用root。这不是TongWeb的特殊要求而是所有中间件都推荐的安全习惯后面部署应用时会在用户权限上省掉很多麻烦。2.3 端口预检查TongWeb默认的HTTP端口是8080管理控制台端口是9060。安装前先用命令查一下这两个端口是否被占用netstat -tlnp | grep 8080 netstat -tlnp | grep 9060如果被占用要么释放端口要么后续修改TongWeb的配置文件。我建议先保持默认端口跑通一遍再去研究如何自定义端口降低初学阶段的复杂度。3. 获取安装包:试用下载与授权说明TongWeb不是完全开源的官方提供试用版下载不少第一次接触的人卡在“找不到下载入口”这一步以为必须联系销售才能拿安装包其实官网上可以申请试用。3.1 官网下载与试用申领流程打开东方通官网在产品中心中找到TongWeb你会发现下载按钮指向的是“试用申请”或“免费试用”需要填写一些基本的信息提交后官方会通过邮件或后台账号下发下载链接和试用授权。流程不复杂但有一点要提醒试用授权是有时间限制的通常是一到三个月学习测试完全够用但如果要长期使用还是要走正常的商务采购流程。等待授权的过程中可以先把JDK环境准备好。我第一次申请时以为很快就能下载结果没提前准备环境拿到安装包后折腾了半天JDK版本反而拖慢了进度。3.2 安装包解压后应该有的内容拿到安装包解压后你会看到一个类似这样的目录结构这里以Linux版本为例TongWeb/ ├── bin/ # 启动、停止脚本 ├── conf/ # 配置文件目录 ├── deploy/ # 应用部署目录war包丢这里就能自动发布 ├── lib/ # TongWeb运行所需的jar包 ├── logs/ # 运行日志目录 ├── webapps/ # 管理控制台自带应用 ├── LICENSE.txt # 授权文件 └── README.txt # 说明文件这个目录结构和Tomcat很像但细节有差异特别是conf目录下的配置文件后面要修改端口、配置JVM参数都要在这里操作。我把每级目录的作用标在后面的章节里你先有个整体印象。4. 安装过程:Linux部署版全程图解下面进入正题以Linux服务器为例讲解从上传安装包到启动成功的完整过程。这里假设你已经通过试用申请拿到了安装包并且JDK 1.8已经就绪。4.1 上传并解压安装包通过xftp、WinSCP或scp命令把安装包上传到服务器建议放到/opt目录下统一管理cd /opt # 请将tongweb-installer.tar.gz替换为你实际拿到的安装包名称 tar -zxvf tongweb-installer.tar.gz解压后你会看到TongWeb文件夹为了方便后续操作建议重命名或移动到标准路径mv TongWeb /opt/tongweb这里有个细节解压后文件夹的名称可能带版本号例如TongWeb-7.0.0。生产环境下我习惯把它改成不带版本号的目录因为后续升级时可以直接软链接切换版本应用部署路径不用跟着变。4.2 配置JAVA_HOME环境变量TongWeb启动时依赖JAVA_HOME或JRE_HOME环境变量。先确认你的JDK安装路径echo $JAVA_HOME如果输出为空需要先设置环境变量。以JDK安装在/usr/local/jdk1.8.0_202为例# 编辑/etc/profile文件追加如下内容 export JAVA_HOME/usr/local/jdk1.8.0_202 export PATH$JAVA_HOME/bin:$PATH export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar保存后执行source /etc/profile java -version看到java version 1.8.0_202这样的输出就说明环境OK了。这里特别提醒一个细节有些服务器上默认装了OpenJDK但TongWeb对OpenJDK的兼容性没有Oracle JDK那么成熟个别版本会出现GC参数不识别的问题。如果遇到启动时JVM参数报错先排查是不是用了不支持的JDK。4.3 启动TongWeb进入bin目录执行启动脚本cd /opt/tongweb/bin ./startservernohup.sh注意脚本名很多人习惯性输入startup.sh结果找不到文件。TongWeb的启动脚本叫startservernohup.sh官方这样设计是为了让TongWeb进程脱离终端会话即便你关闭SSH连接服务仍在后台运行。启动后检查是否成功tail -f /opt/tongweb/logs/tongweb.log如果看到类似“TongWeb server started successfully”的日志说明启动成功。4.4 停止TongWeb停止脚本在同一个目录下./stopserver.sh执行后同样去日志里看有没有停止成功的记录。如果执行完发现端口还开着多半是进程没有完全退出可以先查一下进程ps -ef | grep tongweb必要时用kill命令强制结束老进程再重新启动。5. 登录管理界面:控制台地址和默认账号TongWeb提供了一套Web管理控制台这是它和Tomcat最直观的区别之一。Tomcat虽然也有manager应用但功能和体验完全不在一个量级。5.1 访问控制台地址启动成功后在浏览器中访问http://服务器IP:9060/console注意如果服务器配置了防火墙或安全组记得把9060端口开放否则页面一定打不开。很多新手在本地用虚拟机装TongWeb控制台怎么都访问不了排查了半天发现是VMware的防火墙没放行端口属于低级的坑。5.2 默认用户名密码TongWeb的初始账号密码通常是admin/thanos但具体以你拿到的版本为准在安装包的解压目录里通常会有一个说明文档记录默认密码。我第一次登录时用admin/thanos成功进入之后顺理成章地修改了密码、添加了专用管理账号。这里有一个安全建议生产环境一定要修改默认密码并且严格控制可以访问9060端口的人员范围因为这个控制台权限极高可以部署、下线、配置任意应用被外人拿到等于整个中间件裸奔。5.3 控制台界面一览登录后控制台主页主要分为三个区域左侧导航树包含“实例管理”“应用管理”“系统服务”“安全域”等模块中间内容区展示当前选中的模块的详细信息顶部状态栏显示当前节点状态、运行时长、部署的应用数量等信息初次使用我建议先把“实例管理”和“系统信息”两个页面都点一遍熟悉一下配置项在哪里。后面配置JVM参数、查看版本信息都要回到这里。6. 部署应用:war包与HTML项目实操部署应用是整个安装使用流程的最终目的我把最常见的两类场景拆开讲部署war包和部署静态HTML项目。这两种场景覆盖了绝大多数人第一次用TongWeb时的需求。6.1 通过控制台部署war包在控制台左侧导航中找到“应用管理”点击进入后选择“部署应用”界面上会提供一个文件上传入口。点击“选择文件”选中本地的war包上传后配置应用名称点击“部署”按钮等待几秒钟应用状态变为“已部署”就完成了。部署完成后通过http://IP:8080/应用名 访问你的应用。如果你部署的war包叫demo.war访问路径通常是http://IP:8080/demo/如果访问404先看控制台中的应用状态再去看logs目录下的应用日志多半是war包自身的问题或者JDK版本不兼容导致的初始化失败。6.2 通过deploy目录热部署除了控制台上传TongWeb也支持把war包直接丢到deploy目录下自动发布。这个功能很适合开发阶段快速迭代流程是cp demo.war /opt/tongweb/deploy/然后去日志里观察是否出现自动部署成功的记录。实测下来这个热部署机制非常方便但有一点要注意生产环境下我一般禁用热部署因为一个不小心就会把临时文件删除或者半自动发布造成服务间歇性不可用。开发环境随便造生产环境还是老老实实通过管理界面或发布流程来部署。6.3 部署静态HTML项目的正确姿势对于纯静态项目TongWeb同样支持但姿势和war包不同。你不需要打war包直接把HTML、CSS、JS文件放在一个目录下然后在控制台“应用管理”中点击“部署应用”选择“静态资源目录”方式指定服务器上的目录路径即可。如果你项目里有相对路径的favicon.ico或者静态资源尽量都放在同一个目录下避免出现资源路径错乱。我第一次部署HTML项目时JavaScript文件加载正常但CSS样式全丢了排查了半天发现是HTML里用的绝对路径根目录不对改动一下就好。6.4 部署Spring Boot应用的注意事项Spring Boot项目通常自带内嵌Tomcat但部署到TongWeb时内嵌容器会“打架”。解决办法是在打包时把内嵌Tomcat排除掉让war包以Servlet容器的形式运行dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-tomcat/artifactId scopeprovided/scope /dependency同时Application启动类需要继承SpringBootServletInitializer并重写configure方法。这些适配工作不是TongWeb特有的但却是从Tomcat迁移到TongWeb过程中最容易踩的坑。我在后面章节单独展开。7. 和Tomcat的镜像对比:迁移项目要改什么这部分是给做项目迁移的朋友看的。如果你的应用已经在Tomcat上稳定运行要迁到TongWeb上不是简单把war包丢进去就能完事的。7.1 哪些配置必须改Tomcat的conf/server.xml里配置的端口、虚拟目录、数据源等信息TongWeb的配置文件里虽然也有对应项但路径、节点名称、语法格式都有差异。特别是数据源配置Tomcat用的Context.xml数据源和TongWeb里的“数据源管理”不是同一种配置方式。我的建议是如果数据源简单直接在TongWeb控制台里新建数据源如果数据源复杂涉及连接池参数调优就要参考TongWeb官方文档里对应的数据源配置说明不要试图直接复制Tomcat的配置内容。7.2 哪些问题经常出现我列一个常见的迁移问题清单都是我在实际项目中遇到的问题现象可能原因解决方法应用部署后启动失败日志报NoClassDefFoundErrorjar包冲突或缺少依赖检查lib目录下的公共jar包是否与应用的jar包重复JSP页面渲染异常JSP编译器版本差异在TongWeb中对应用设置兼容的JSP编译级别session丢失会话保持配置不一致在控制台配置会话超时和持久化策略上传文件大小受限默认请求体大小限制调整TongWeb的请求大小参数这些问题大多数在Tomcat上不会遇现主要原因是中间件对Java EE规范的默认实现细节不同不代表TongWeb“有坑”只是需要调整适配。遇到问题第一反应应该是去查日志而不是去改代码因为大部分问题都是配置层面可以解决的。7.3 代码层要不要动如果你的应用用的是Servlet、Spring MVC、MyBatis这类标准生态代码层面基本不用动。只用把部署描述符web.xml里配置的版本声明确认一下即可。如果项目里用了仅Tomcat私有API比如org.apache.catalina下的类那就需要做一些改造因为这些类在TongWeb里不存在。8. 常见问题排查:基于实测的排错链路排错能力是中间件使用中最重要的能力因为TongWeb的维护体验完全取决于日志排查的效率。这一节我挑几个高频问题走一遍完整的排查链路而不是直接给出结论。8.1 启动脚本报“JAVA_HOME is not defined”这是最常见的新手问题原因很直接系统没有配置JAVA_HOME环境变量或配置的值指向了不存在的路径。排查步骤# 第1步确认JDK是否安装 java -version # 第2步确认JAVA_HOME路径是否正确 echo $JAVA_HOME ls $JAVA_HOME/bin/java # 第3步检查启动脚本中引用的JAVA_HOME是哪个路径 head -50 /opt/tongweb/bin/startservernohup.sh如果第2步输出为空说明环境变量没生效。重新编辑/etc/profile后记得source一下。这个通病也提醒我每次到新服务器第一件事就是检查环境变量省得后来浪费时间。8.2 端口占用导致启动失败启动日志里出现Address already in use字样说明端口被占用了。一般有两种情形上一次启动的进程没有完全退出或者别的程序占用了端口。排查步骤netstat -tlnp | grep 8080 netstat -tlnp | grep 9060查到占用端口的进程PID后用ps确认是不是TongWeb的残留进程。如果是残留进程kill掉再启动如果是别的程序就需要修改TongWeb的端口配置。修改端口在conf目录下的相关配置文件里或者在控制台“实例管理”中调整。8.3 部署war包后应用一直处于“正在部署”状态这个问题的排查链路稍微长一些会用到日志:tail -100 /opt/tongweb/logs/tongweb.log tail -100 /opt/tongweb/logs/应用名/stdout.log常见原因有三类war包结构不对缺少必要的目录层级应用依赖的jar包和TongWeb自带的jar包冲突应用初始化时连不上数据库导致长时间等待。处理办法如果应用配置了数据源先检查数据库连接是否可用如果使用了复杂的第三方库看冲突类名一般在哪个jar包再决定是换依赖版本还是排除冲突包。8.4 控制台打不开控制台页面打不开主要从网络、端口、进程、服务状态四个角度排查依次确认9060端口在服务器上是否真的在监听防火墙是否放行了9060端口浏览器访问是否用了正确的地址HTTPS还是HTTP其中容易被忽视的是访问协议问题。控制台地址必须是http://IP:9060/console如果你手滑用了https大概率会登录不了因为TongWeb默认没有开启HTTPS监听。8.5 日志输出出现乱码或中文乱码这个问题在Windows环境下尤其常见。可以在启动脚本中添加JVM编码参数-Dfile.encodingUTF-8Linux下如果还乱码检查系统locale是否支持UTF-8。这个不是核心问题但不解决会很影响排查效率毕竟日志看不懂后面的所有排查都无法进行。9. 我的经验:日常维护建议和隐藏小技巧最后分享一些实操中沉淀下来的习惯和技巧。这些内容不一定会写在官方文档里但对日常维护很有帮助。9.1 每天必做的巡检命令我会把下面这几条命令形成一个固定巡检清单每次登录服务器后依次执行# 查看TongWeb进程是否存活 ps -ef | grep tongweb | grep -v grep # 查看端口监听状态 netstat -tlnp | grep -E 8080|9060 # 检查日志是否有异常 tail -50 /opt/tongweb/logs/tongweb.log | grep -E ERROR|Exception这些命令执行一遍不到十秒钟但能提前发现大半隐患。曾经有个环境就是靠巡检时发现的日志异常提前处理了数据源连接池耗尽的问题避免了一次线上事故。9.2 JVM参数调优怎么入手TongWeb在启动脚本中可以设置JVM的堆内存参数我的一套最低可用的生产配置供参考JAVA_OPTS-Xms2048m -Xmx2048m -XX:MaxMetaspaceSize512m在实际项目中先用默认参数跑起来然后根据应用的GC日志逐步调整。不要一上来就盲目调大堆内存反而会导致系统资源闲置。9.3 多实例部署建议如果有多个应用互不干扰地部署在同一台机器上我建议为每个应用单独创建一个TongWeb实例而不是把多个war包放进同一个TongWeb的deploy目录。一个TongWeb实例可以运行多个应用但应用之间的资源隔离性太差一个应用的内存泄漏可能拖垮整台服务器。多实例部署会让运维复杂度上升但安全性、稳定性和故障隔离性都好很多。10. 写在最后的几句话整个流程走下来你会发现TongWeb的安装使用和Tomcat很像但又有很多自己的规矩。关键在于不把它当做一个“高级Tomcat”而是认真对待每一处差异遇到问题先从日志出发一步一步排查。我个人在实际操作中最深的体会是国产中间件其实已经做得相当成熟很多问题都可以通过官方文档和技术支持解决。真正容易出错的环节反而是团队里缺少一个人把“安装、部署、登录控制台”这些最基础的事情跑通并固化成文档。希望这篇图文详解能帮你少走这些弯路后面我会再整理一份更详细的项目迁移记录专门讲从Tomcat迁移到TongWeb时的代码适配和数据源配置。