You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK17迁移:轻量Jakarta Web服务器及ActiveMQ JMS依赖咨询

现有应用模块
  • JAX-WS
  • JMS:采用ActiveMQ Artemis实现,原依赖如下:
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>artemis-jms-client</artifactId>
    <version>2.4.0</version>
</dependency>
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>artemis-jms-client</artifactId>
    <version>2.4.0</version>
</dependency>
  • JDK版本:1.8
  • 应用服务器:Wildfly
升级计划

计划将应用升级至JDK 17(LTS版本),迁移后javax包将替换为jakarta包。

问题与解答

1. 除Wildfly外,支持Jakarta-WS和Jakarta-JMS的轻量Web服务器有哪些?

  • Tomcat:从Tomcat 10开始全面支持Jakarta EE规范,可通过添加Jakarta JMS相关依赖或集成ActiveMQ Artemis资源适配器实现Jakarta-JMS支持,对Jakarta-WS的支持也成熟完善。
  • Jetty:Jetty 11及以上版本适配Jakarta EE API,可直接配置Jakarta-WS端点,同时能通过集成ActiveMQ Artemis客户端或资源适配器实现Jakarta-JMS功能,启动速度快、资源占用低,属于典型轻量服务器。
  • Undertow:原本是Wildfly内置的Web服务器,也可单独部署使用,原生支持Jakarta-WS和Jakarta-JMS,只需搭配对应Jakarta EE API依赖和ActiveMQ Artemis客户端即可完成配置,轻量高效。

2. 迁移至JDK 17后,通过ActiveMQ实现Jakarta-JMS需引入哪些依赖?

原依赖基于javax规范且版本老旧,迁移后需替换为支持Jakarta规范的ActiveMQ Artemis客户端依赖,同时移除旧的activemq-all(该包属于ActiveMQ Classic,基于javax,不兼容Jakarta环境)。推荐的依赖配置如下:

<!-- Jakarta JMS API 规范包 -->
<dependency>
    <groupId>jakarta.jms</groupId>
    <artifactId>jakarta.jms-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

<!-- ActiveMQ Artemis Jakarta JMS 客户端 -->
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>artemis-jms-client</artifactId>
    <version>2.31.0</version> <!-- 需使用2.10.0及以上版本,确保支持Jakarta规范,且与服务器端版本兼容 -->
</dependency>

说明:

  • jakarta.jms-api是Jakarta官方的规范API包,若使用的轻量服务器已内置该API,可设为provided;若服务器未提供,则需移除provided作用域,让项目自行引入。
  • 原artemis-jms-client 2.4.0版本基于javax,必须升级到2.10.0及以上版本,因为从该版本开始ActiveMQ Artemis正式支持Jakarta JMS规范。
  • 旧的activemq-all与Artemis属于不同产品,迁移时务必移除,避免依赖冲突。

内容的提问来源于stack exchange,提问作者reza ramezani matin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:20:30