本文为整理型内容:依据东方通官方信息及社区公开资料整理,均已注明出处,具体以官方最新文档为准。

结论先给:TongWeb 7 部署 WAR 包,问题大多集中在四类——JDK 版本不匹配、类找不到、类加载冲突、前端静态项目 404。另外它和 Tomcat 的类加载机制不同,很多"Tomcat 上正常、TongWeb 上报错"的问题都源于此。

一、环境说明

1.1 TongWeb 7 定位

东方通应用服务器软件 TongWeb V7.0 是遵循 Java EE 7 规范的企业级应用服务器,提供负载均衡、集群、Web Service、数据库连接池、事务处理与安全管理能力。TongWeb 8 起逐步适配 Jakarta EE 规范,两者命名空间不同(javax vs jakarta),部署包不能混用。

1.2 JDK 兼容性

  • 基础要求:TongWeb 7 要求 JDK 7u40 及以上(官方),生产环境推荐 JDK 8 LTS,兼容性最广泛。
  • JDK 11:需使用 TongWeb 免安装版;安装版(如 7.0.4.2)对 JDK 8 有强依赖,预装 JDK 11 存在二进制兼容问题(社区实践总结)。
  • HTTPS 特殊要求:SSL 协议用 TLS 1.3 时,JDK 要求 1.8.0_261 及以上;启用国密认证时,JDK 要求 8-11。
  • TongWeb 7.0.4+ 与框架版本:7.0.4 支持更新的 JDK 版本,但不支持 Spring Boot 3.x / Spring Framework 6.x(需要 Jakarta EE 9+,对应 TongWeb 8.0)。

二、问题清单

问题 1:部署后访问 404

现象:WAR 包部署成功,访问页面返回 404。

原因与解决:

  1. 前端静态项目缺少 web.xml(社区常见)。TongWeb 部署 Vue 等前端静态项目时,需要在 dist 目录下新建 WEB-INF 文件夹并放入 web.xml,404 时跳回首页:
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
    <error-page>
        <error-code>404</error-code>
        <location>/index.html</location>
    </error-page>
</web-app>
  1. *tongweb.properties 中配置了 .jar 过滤(社区经验):会导致 jar 包内 /META-INF/resources/ 下的静态资源 404。移除该过滤配置,重启 TongWeb 并强制刷新浏览器。

  2. 访问路径/应用前缀错误:确认应用前缀(context path)是否设置为 /,静态资源路径与配置是否一致。

  3. 多项目部署冲突:TongWeb 默认自带一个虚拟主机 server,部署多个项目时需要创建多个虚拟主机和 HTTP 通道,避免端口冲突。

问题 2:ClassNotFoundException / NoClassDefFoundError

现象:应用启动或运行时抛出类找不到异常。

原因与解决:

  1. JAXB 相关类缺失:从 JDK 9 开始,JAXB 等模块被移出 Java SE 核心库。应用(尤其 Spring Boot 或老框架)在 JDK 9+ 上运行时,需在 WEB-INF/lib 下显式添加 JAXB API 及实现包(javax.xml.bind:jaxb-api、com.sun.xml.bind:jaxb-impl),注意包版本冲突。

  2. EL API 缺失:报 java.lang.NoClassDefFoundError: javax.el.ELManager 表示缺少 EL API jar。常见处理:从 Tomcat 的 lib 目录拷贝 el-api.jar 到 TongWeb 的 lib 目录,重启后重新部署(社区实践)。

  3. Spring Boot 内置 Tomcat 未排除:Spring Boot 项目部署到 TongWeb,必须在 pom.xml 中排除 spring-boot-starter-tomcat 依赖,并将打包方式改为 war,否则内置 Tomcat 类库与 TongWeb 冲突:

<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>

问题 3:类加载冲突 / NoSuchMethodError

现象:应用在 Tomcat 上运行正常,部署到 TongWeb 后报 NoSuchMethodError 等错误。

原因:应用 WEB-INF/lib 下多个 jar 包含同名类,Tomcat 与 TongWeb 7 的 jar 加载顺序不同,导致引用到不同版本的类。

解决:在应用 WEB-INF/lib 下新增 tongweb-web.xml,按优先级列出冲突的 jar 包,TongWeb 将按排列顺序加载(具体标签写法以东方通官方文档为准):

<?xml version="1.0" encoding="UTF-8"?>
<tongweb-web-app>
    <jar-orders>
        <jar-order jar-name="commons-codec-1.10.jar" />
        <!-- 按优先顺序列出所有冲突的 jar 包 -->
    </jar-orders>
</tongweb-web-app>

也可以用 TongWeb 控制台的"类加载分析工具"→“类资源分析/类冲突检测"定位冲突。

问题 4:web.xml 版本不兼容

现象:应用部署失败,提示 web.xml 解析错误。

说明:TongWeb 7 遵循 Java EE 7 规范,建议应用采用的 Java EE 版本与 TongWeb 版本对应;使用超出 TongWeb 7 支持的规范特性(如 Servlet 4.0 特性)会解析失败。

三、达梦数据源配置步骤

3.1 准备驱动

将达梦 JDBC 驱动(DmJdbcDriver18.jar)复制到 TongWeb 的 lib 目录。若应用使用 Hibernate 等持久化框架,还需要达梦提供的方言包(如 DmDialect-for-hibernate3.0.jar)。

建议:TongWeb 数据源与应用共用同一份驱动(放 lib 目录即可);若一个 TongWeb 上配置多个同类型不同版本的数据库,需把驱动放在其他目录并在配置数据源时指定。

3.2 配置 server.xml

在 TongWeb 的 conf 目录下找到 server.xml,添加 Resource 配置:

<Resource 
    name="jdbc/DamengDS" 
    auth="Container" 
    type="javax.sql.DataSource" 
    maxActive="100" 
    maxIdle="30" 
    maxWait="10000" 
    username="your_username" 
    password="your_password" 
    driverClassName="dm.jdbc.driver.DmDriver" 
    url="jdbc:dm://127.0.0.1:5236/cs"
/>

URL 格式:jdbc:dm://主机:端口/数据库名(达梦默认端口 5236)。

3.3 配置 context.xml(可选)

在 conf 目录下找到 context.xml,添加 ResourceLink:

<ResourceLink 
    global="jdbc/DamengDS" 
    name="jdbc/DamengDS" 
    type="javax.sql.DataSource"
/>

3.4 应用中通过 JNDI 使用

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/DamengDS");
Connection conn = ds.getConnection();

3.5 连接池参数建议

  • 最小/最大连接数:按业务并发设置,最大连接数不得超过数据库可用连接数
  • 创建连接时验证:建议开启,用 connection.isValid() 验证
  • 空闲连接检查:建议开启,避免长期占用数据库连接

四、FAQ

Q1:TongWeb 7 和 Tomcat 的类加载机制有什么不同?

TongWeb 遵循标准双亲委派模型,默认优先加载 $TONGWEB_HOME/lib 下的 jar,而非应用自身的 WEB-INF/lib;Tomcat 则优先加载 Web 应用自身的类库。因此应用在 Tomcat 正常、TongWeb 报类冲突/类找不到很常见。另外 TongWeb 是完整应用服务器(内置 EJB 容器、JMS 服务),Tomcat 本质是 Servlet 容器。

Q2:TongWeb 7 部署 Spring Boot 项目需要注意什么?

排除内置 Tomcat(见问题 2-3)、打包方式改为 war、启动类继承 SpringBootServletInitializer 并重写 configure 方法。注意 TongWeb 7.0.4 不支持 Spring Boot 3.x,需 TongWeb 8.0。

Q3:TongWeb 7 支持自动部署吗?

支持。将 WAR 包放入 ${TongWeb安装目录}/autodeploy 目录即可自动部署;也可在控制台选择"重部署”。

Q4:TongWeb 管理控制台的默认地址和账号?

控制台地址 http://<IP>:9060/console,默认用户名/密码为 thanos/thanos123.com。首次登录必须修改密码(大写+小写+数字+特殊字符 4 类组成,长度不少于 10 位)。注意:默认口令是安全审计重点检查项,上线前务必修改。

Q5:部署后访问还是 404,还有哪些排查方向?

  • 应用前缀是否设置为 /
  • 虚拟主机和 HTTP 通道配置是否正确
  • 端口是否被占用
  • 是否有 jar 包冲突导致应用未完全启动

来源:东方通官网(tongtech.com)产品文档、TongWeb 管理控制台、达梦官方 JDBC 文档,以及 CSDN、博客园等社区实战帖。整理于 2026-08,部分细节来自社区实践,生产环境部署前建议联系东方通技术支持获取官方最新文档。