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

Ballerina语言模块内定义的HTTP服务无法处理请求的问题排查

解决Ballerina子模块中服务无法被访问的问题

这个问题的核心原因是Ballerina默认不会自动加载未被引用的子模块——你的question模块里的服务代码根本没被执行,自然不会注册到QuestionManagementListener监听器上,所以访问时返回404错误。

解决方案:在主模块中显式导入question子模块

只需要在main.bal中添加对question模块的导入即可——哪怕你不需要直接使用该模块的任何符号,导入操作也会触发模块的加载,模块内的服务就会自动注册到共享的监听器上。

修改后的main.bal代码如下:

import question_management.http_listener;
// 添加上这行导入,触发question模块的加载
import question_management.question;

service / on http_listener:QuestionManagementListener {
    resource function get status() returns string {
        return "UP";
    }
}

为什么这样有效?

Ballerina的模块是惰性加载的:只有当某个模块被其他模块导入,或者被指定为入口模块运行时,它的代码才会被执行。你的question模块里的服务依赖于http_listener的监听器,但主模块之前没有导入它,导致该模块从未被加载,服务也就没有机会注册到监听器上。

而当你把服务移到main.bal时,它属于主模块的一部分,主模块作为入口被执行,服务自然能成功注册。

验证步骤

  1. 保存修改后的main.bal
  2. 重新启动你的Ballerina程序
  3. 访问http://localhost:9095/questions/allQuestions,现在应该能正常返回预期的JSON响应了

另外,确保你的question模块的路径与导入语句匹配(默认模块结构下无需额外配置),就能正常工作。

内容的提问来源于stack exchange,提问作者Deyan Georgiev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:49:06