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

如何在Kafka Connect Runtime中升级Jetty Client依赖?

解决Kafka Connect Runtime依赖Jetty Client的安全漏洞问题

是否可以强制Kafka Connect使用指定版本的Jetty Client?

可以通过构建工具的依赖管理功能强制覆盖传递依赖的Jetty Client版本,但需要注意版本兼容性风险。

connect-runtime 3.8.1/3.9.0是否支持升级Jetty Client到12.x版本?

Kafka Connect 3.8.1和3.9.0默认依赖Jetty 9.x系列,而Jetty 12是跨大版本升级(从javax.* API切换到jakarta.* API),直接升级大概率会出现兼容性问题,比如类加载错误、方法签名不匹配等。除非你的项目已经全量迁移到Jakarta EE规范,否则不建议直接升级到Jetty 12。

处理依赖问题的具体建议

  1. 优先升级Jetty 9.x的最新安全补丁版本
    Jetty 9.x系列仍在维护安全补丁,比如9.4.57.v20240903已经修复了已知漏洞。这个版本和Kafka Connect 3.x的兼容性最好,无需修改代码,直接通过依赖覆盖即可。

  2. 使用构建工具强制覆盖依赖

    • Maven:在dependencyManagement中声明指定版本,自动覆盖传递依赖:
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-client</artifactId>
            <version>9.4.57.v20240903</version>
          </dependency>
        </dependencies>
      </dependencyManagement>
      
    • Gradle:用strictly和force强制锁定版本:
      dependencies {
          implementation 'org.apache.kafka:connect-runtime:3.8.1'
          implementation('org.eclipse.jetty:jetty-client') {
              version { strictly '9.4.57.v20240903' }
              force = true
          }
      }
      
  3. 若必须升级到Jetty 12.x的注意事项

    • 验证所有自定义Connector和业务代码是否兼容Jakarta EE规范,需将所有javax.servlet相关依赖替换为jakarta.servlet。
    • 引入Jetty的兼容性桥接包(如jetty-jakarta-migration),但会增加项目复杂度,且无法保证100%兼容。
    • 做全量测试:启动集群后,验证所有Connector的生产、消费逻辑,以及REST API是否正常工作。
  4. 长期解决方案
    查看Kafka官方发布计划,升级到默认使用更高版本Jetty的Kafka Connect版本(如后续的3.10+版本,需确认官方依赖清单),从根源上解决依赖漏洞问题。

内容的提问来源于stack exchange,提问作者Narendra Choudhary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:05:10