Ubuntu 22.04 安装 Apache ServiceComb java-chassis 3.3.0 指南

Ubuntu 22.04 安装 Apache ServiceComb java-chassis 3.3.0(微服务开发框架 SDK)指南:JDK 17 与 Maven 环境准备、版本选型(1.x/2.x/3.x 与 JDK 对照)、Maven 依赖引入与官方发行版 zip 离线两种方案、sha512 校验与卸载,全程实测。

Apache ServiceCombApache ServiceComb2026/10/12

Ubuntu 22.04 安装 Apache ServiceComb java-chassis 3.3.0 指南

目标:在 Ubuntu 22.04 服务器上完成 Apache ServiceComb java-chassis 3.3.0(Java 微服务开发框架,以 Maven 依赖或官方发行版 jar 引入,配合你的 Spring Boot 工程构建 REST 微服务,非独立守护进程)的安装与验证。本文给出 JDK 17 环境准备、1.x/2.x/3.x 版本选型对照、Maven 依赖引入与「官方发行版 zip 离线安装」两种方案,以及编译验证与卸载方式。所有命令与回显均在 Ubuntu 22.04.5 + JDK 17 环境实测通过。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS(VERSION_CODENAME=jammy)
  • 架构:x86_64(内核 6.8.0-138-generic)
  • Java:OpenJDK 17.0.20.1(openjdk-17-jdk-headless,Ubuntu 官方源)
  • 构建工具:Apache Maven 3.6.3(Ubuntu 官方源)
  • java-chassis 版本:3.3.0(当前最新稳定主线,需 JDK 17,基于 Spring Boot 3.x / Jakarta EE 9+ 命名空间)
  • 演示账号:root
  • 示例工程目录:/root/servicecomb-hello/
  • 发行版安装目录(方案 B):/opt/servicecomb/

💡 说明:Apache ServiceComb java-chassis 是一个发布为 Maven 依赖(org.apache.servicecomb:*)的微服务框架,本身没有独立守护进程或管理端口;所谓「安装」本质是准备好 JDK/Maven 环境并把 java-chassis 的 starter 依赖引入到你的 Spring Boot 工程,随应用进程启动 REST 服务。

二、前置条件

2.1 更新软件源

sudo apt-get update

2.2 安装 JDK 17 与 Maven

java-chassis 3.x 需要 JDK 17(Spring Boot 3.x / Jakarta 命名空间),Ubuntu 22.04 官方源已内置:

sudo apt-get install -y openjdk-17-jdk-headless maven wget curl unzip

验证 JDK 与 Maven:

java -version
mvn -version

实测回显:

openjdk version "17.0.20.1" 2026-08-18
OpenJDK Runtime Environment (build 17.0.20.1+1-1-22.04-Ubuntu)
OpenJDK 64-Bit Server VM (build 17.0.20.1+1-1-22.04-Ubuntu, mixed mode, sharing)
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 17.0.20.1, vendor: Ubuntu, runtime: /usr/lib/jvm/java-17-openjdk-amd64
Default locale: en_US, platform encoding: ANSI_X3.4-1968

⚠️ 注意:若 mvn -version 显示的 Java version 不是 17,说明默认 JVM 指向了其他版本,请在当前会话执行:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

三、版本选型说明

通过 Apache 官方发行目录探测当前在维护的版本:

curl -s https://dlcdn.apache.org/servicecomb/servicecomb-java-chassis/ | grep -oE "href=\"[0-9][^\"]+/\"" | tr -d "href=\"/"

实测返回:

1.3.11
2.8.31
2.9.5
3.3.0

三个主线版本对照如下:

版本所需 JDK编程命名空间适用场景结论
1.3.11JDK 8javax遗留系统维护仅旧系统使用
2.8.31 / 2.9.5JDK 8 / 11javax存量 JDK8/11 环境用 2.x
3.3.0JDK 17jakarta(Spring Boot 3.x)新项目、最新稳定主线推荐 3.3.0

💡 版本选择建议:新项目直接选 java-chassis 3.3.0 + JDK 17;只有服务器停留在 JDK 8/11 且无法升级时才选 2.x(2.x 使用 javax 命名空间与 Spring Boot 2.x,API 与 3.x 不兼容)。本指南全程按 JDK 17 + java-chassis 3.3.0 实测。

四、方案 A:Maven 项目依赖引入(官方推荐)

java-chassis 官方推荐通过 Maven 以依赖方式引入,便于统一版本、传递依赖与打包。本方案从零创建一个最小 Maven 工程并验证依赖可解析、可编译。

4.1 创建 Maven 工程

mkdir -p /root/servicecomb-hello/src/main/java/demo
mkdir -p /root/servicecomb-hello/src/main/resources
cd /root/servicecomb-hello

4.2 编写 pom.xml 并引入 java-chassis 依赖

使用 <dependencyManagement> 同时导入 java-chassis-bom 与 spring-boot-dependencies,锁定全部版本:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>demo</groupId>
    <artifactId>servicecomb-hello</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java-chassis.version>3.3.0</java-chassis.version>
        <spring-boot.version>3.2.12</spring-boot.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.servicecomb</groupId>
                <artifactId>java-chassis-bom</artifactId>
                <version>${java-chassis.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.apache.servicecomb</groupId>
            <artifactId>java-chassis-spring-boot-starter-standalone</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

    <build>
        <finalName>servicecomb-hello</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

💡 说明:java-chassis-spring-boot-starter-standalone 是 3.x「REST over Vert.x 独立进程」形态的最小 starter,自带 REST 服务能力(基于 vert.x 4.5.15),不依赖外置 Servlet 容器。若你的工程要部署到外部 Tomcat,可改用 java-chassis-spring-boot-starter-servlet。

4.3 编译验证

为让工程可编译,先放一个最小主类:

cat > /root/servicecomb-hello/src/main/java/demo/HelloApplication.java <<'EOF'
package demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }
}
EOF

编译打包:

cd /root/servicecomb-hello
mvn clean package -DskipTests

实测结果(节选):

[INFO] --- spring-boot-maven-plugin:3.2.12:repackage (repackage) @ servicecomb-hello ---
[INFO] Replacing main artifact /root/servicecomb-hello/target/servicecomb-hello.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

生成的可执行 jar:

-rw-r--r-- 1 root root 63431921 Oct 12 13:44 target/servicecomb-hello.jar

Maven 本地仓库 ~/.m2/repository/org/apache/servicecomb/ 下会生成 java-chassis 全套 3.3.0 jar(java-chassis-core、transport-rest-vertx、provider-springmvc、provider-jaxrs 等 27 个组件)。

五、方案 B:官方发行版 zip 离线安装(内网 / 无 Maven 场景)

在不使用 Maven 的场景(如离线内网、手工 classpath 组装),可以直接下载 Apache 官方发行版 zip 包,内含全部 63 个运行时 jar。

5.1 下载发行版并校验 sha512

mkdir -p /opt/servicecomb
cd /opt/servicecomb
wget https://dlcdn.apache.org/servicecomb/servicecomb-java-chassis/3.3.0/apache-servicecomb-java-chassis-distribution-3.3.0-bin.zip
wget https://dlcdn.apache.org/servicecomb/servicecomb-java-chassis/3.3.0/apache-servicecomb-java-chassis-distribution-3.3.0-bin.zip.sha512
sha512sum apache-servicecomb-java-chassis-distribution-3.3.0-bin.zip
cat apache-servicecomb-java-chassis-distribution-3.3.0-bin.zip.sha512

实测回显(两值一致为校验通过):

d6e6589068f48c6239a1fbba28977c91bf6beb6875505b3f6f0d7cf551c67dd9ca1f4479a912d65266c6338370680f0188575ef5b4d9a06035bc378aa0649403  apache-servicecomb-java-chassis-distribution-3.3.0-bin.zip
d6e6589068f48c6239a1fbba28977c91bf6beb6875505b3f6f0d7cf551c67dd9ca1f4479a912d65266c6338370680f0188575ef5b4d9a06035bc378aa0649403 *apache-servicecomb-java-chassis-distribution-3.3.0-bin.zip

💡 dlcdn.apache.org 只保留当前在维护的版本;历史版本(如 2.x 更早的 2.8.x、3.0~3.2 系列)可到归档站 https://archive.apache.org/dist/servicecomb/servicecomb-java-chassis/ 下载。

5.2 解压与目录结构

unzip -q apache-servicecomb-java-chassis-distribution-3.3.0-bin.zip -d /opt/servicecomb
ls /opt/servicecomb/apache-servicecomb-java-chassis-distribution-3.3.0-bin/

实测回显:

LICENSE
NOTICE
README.md
README_ZH.md
libs
licenses

libs/ 下为全部运行时 jar(共 63 个),核心组件包括:

jar作用
java-chassis-core-3.3.0.jar框架核心:SCBEngine、微服务注册与发现骨架
transport-rest-vertx-3.3.0.jarREST over Vert.x 通信模块
provider-rest-common-3.3.0.jar@RestSchema REST 生产者支持
provider-springmvc-3.3.0.jarSpring MVC 注解生产者支持
provider-jaxrs-3.3.0.jarJAX-RS 注解生产者支持
handler-loadbalance-3.3.0.jar消费端负载均衡

5.3 验证 jar 版本

unzip -p /opt/servicecomb/apache-servicecomb-java-chassis-distribution-3.3.0-bin/libs/java-chassis-core-3.3.0.jar META-INF/MANIFEST.MF

实测回显:

Manifest-Version: 1.0
Created-By: Maven JAR Plugin 3.4.2
Build-Jdk-Spec: 17
Specification-Title: Java Chassis::Core
Specification-Version: 3.3
Specification-Vendor: The Apache Software Foundation
Implementation-Title: Java Chassis::Core
Implementation-Version: 3.3.0
Implementation-Vendor: The Apache Software Foundation

离线使用时,把 libs/ 全部 jar 加入 CLASSPATH(或安装到内网私服 Nexus/Artifactory),即可按方案 A 相同的坐标编码。

六、配置说明

java-chassis 作为随应用启动的框架,核心配置集中在两处:

  • Maven 依赖版本:java-chassis-bom 与 spring-boot-dependencies 两个 import 必须成对出现,版本分别为 3.3.0 与 3.2.12。
  • 微服务配置文件:src/main/resources/microservice.yaml,声明服务名、版本、注册中心与 REST 监听地址;该文件由 java-chassis 在启动时加载。最小可用配置:
application:
  name: hello-app
servicecomb:
  service:
    name: hello
    version: 0.0.1
    registry:
      enabled: false
  rest:
    address: 0.0.0.0:8080

⚠️ 注意:standalone 形态(REST over Vert.x)下,classpath 存在 spring-webmvc 但没有 Servlet 容器,Spring Boot 会尝试启动 Servlet Web 服务而失败,需在 src/main/resources/application.yml 中关闭:

spring:
  main:
    web-application-type: none

详细参数含义与生产模板见《Apache ServiceComb java-chassis 3.3.0 配置参数详解》篇;API 用法速查见《Apache ServiceComb java-chassis 3.3.0 常用工具与 API 详解》篇。

七、注意事项

⚠️ 注意:

  1. java-chassis 3.x 必须 JDK 17+;JDK 8/11 只能配 2.x(javax 命名空间)。选版本前先确认服务器 JDK。
  2. 3.x 主类无需任何 java-chassis 注解(2.x 的 @EnableServiceComb 在 3.x 中已移除,编译会报 package org.apache.servicecomb.springboot.starter does not exist);java-chassis 3.x 各模块通过 Spring Boot 3 标准的 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 自动装配。
  3. java-chassis 3.x 与 2.x 的注册中心地址配置键不同:2.x 为 servicecomb.service.registry.address,3.x 只支持 servicecomb.registry.sc.address。
  4. 进程内存建议显式限制 JVM 堆(如 java -Xms256m -Xmx512m -jar app.jar),并用 jps -v 验证生效。

八、常见问题

Q1:编译报 package org.apache.servicecomb.springboot.starter does not exist / cannot find symbol: class EnableServiceComb? 使用了 2.x 时代的主类写法。java-chassis 3.x 已移除 @EnableServiceComb 注解,主类只保留 @SpringBootApplication,框架经 Spring Boot 3 自动配置装配:

@SpringBootApplication
public class HelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }
}

Q2:启动报 Web application could not be started as there was no org.springframework.boot.web.servlet.server.ServletWebServerFactory bean defined in the context? standalone starter 的 REST 由 Vert.x 提供,classpath 中没有 Servlet 容器;而 Spring Boot 检测到 spring-webmvc 后默认按 Servlet Web 应用启动。在 application.yml 中设置 spring.main.web-application-type: none 即可,REST 端口由 servicecomb.rest.address 管理。

Q3:Maven 下载慢或超时? 可在 ~/.m2/settings.xml 配置镜像仓库,或提前在有网环境执行一次 mvn package 再把 ~/.m2/repository 整体拷贝到目标服务器(离线编译)。

Q4:dlcdn.apache.org 上找不到想要的旧版本? 官方 CDN 只保留当前维护版本,历史版本到 https://archive.apache.org/dist/servicecomb/servicecomb-java-chassis/ 下载。

九、卸载方式

若仅移除 Maven 依赖:删除 pom.xml 中 org.apache.servicecomb 相关 <dependency>,并清理本地仓库缓存:

rm -rf ~/.m2/repository/org/apache/servicecomb
rm -rf /root/servicecomb-hello

若采用方案 B 安装了发行版,直接删除安装目录:

rm -rf /opt/servicecomb

若同时移除 JDK 17 与 Maven:

sudo apt-get remove -y openjdk-17-jdk-headless maven
sudo apt-get autoremove -y

十、参考链接

  • Apache ServiceComb 官方下载目录:https://dlcdn.apache.org/servicecomb/servicecomb-java-chassis/
  • 历史版本归档:https://archive.apache.org/dist/servicecomb/servicecomb-java-chassis/
  • java-chassis 官方文档:https://servicecomb.apache.org/references/java-chassis/zh_CN/
  • Maven Central 仓库:https://repo1.maven.org/maven2/org/apache/servicecomb/