1 - 常见问题列表

问题 1-1:模块 compile 引入 springboot 依赖,模块安装时报错

java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationListener : com.alipay.sofa.serverless.common.spring.ServerlessApplicationListener
解决方式

模块需要做好瘦身,参考这里:模块瘦身

问题 1-2:模块安装找不到 ServerlessApplicationListener

报错信息如下:

com.alipay.sofa.ark.exception.ArkLoaderException: [ArkBiz Loader] module1:1.0-SNAPSHOT : can not load class: com.alipay.sofa.serverless.common.spring.ServerlessApplicationListener
解决方式

请在模块里面添加如下依赖:

<dependency>
    <groupId>com.alipay.sofa.serverless</igroupId>
    <artifactId>sofa-serverless-app-starter</artifactId>
    <version>0.5.5</version>
</dependency>

或者升级 sofa-serverless 版本到最新版本

问题 1-3: 通过 go install 无法安装 arkctl

执行如下命令,报错

go install serverless.alipay.com/sofa-serverless/v1/arkctl@latest

报错信息如下:

go: serverless.alipay.com/sofa-serverless/v1/arkctl@latest: module serverless.alipay.com/sofa-serverless/v1/arkctl: Get "https://proxy.golang.org/serverless.alipay.com/sofa-serverless/v1/arkctl/@v/list": dial tcp 142.251.42.241:443: i/o timeout
解决方式

arkctl 是作为 sofa-serverless 子目录的方式存在的,所以没法直接 go get,可以从这下面下载执行文件, 请参考安装 arkctl

问题 1-4:模块安装报 Master biz environment is null

解决方式,升级 sofa-serverless 版本到最新版本

<dependency>
    <groupId>com.alipay.sofa.serverless</igroupId>
    <artifactId>sofa-serverless-app-starter</artifactId>
    <version>${最新版本号}</version>
</dependency>

问题 1-5:模块静态合并部署无法从制定的目录里找到模块包

解决方式,升级 sofa-serverless 版本到最新版本

<dependency>
    <groupId>com.alipay.sofa.serverless</igroupId>
    <artifactId>sofa-serverless-app-starter</artifactId>
    <version>${最新版本号}</version>
</dependency>

2 - 如果模块独立引入 SpringBoot 框架部分会怎样?

由于多模块运行时的逻辑在基座引入和加载,例如一些 Spring 的 Listener。如果模块启动使用完全自己的 SpringBoot,则会出现一些类的转换或赋值判断失败,例如:

CreateSpringFactoriesInstances

image.png

name = ‘com.alipay.sofa.ark.springboot.listener.ArkApplicationStartListener’, ClassUtils.forName 获取到的是从基座 ClassLoader 的类
image.png
而 type 是模块启动时加载的,也就是使用模块 BizClassLoader 加载。
image.png
此时这里做 isAssignable 判断,则会报错。

Cannot instantiate interface org.springframework.context.ApplicationListener : com.alipay.sofa.ark.springboot.listener.ArkApplicationStartListener

所以模块框架这部分需要委托给基座加载。