使用GET请求测试Ballerina服务时遇连接拒绝错误求助
排查Ballerina服务localhost:8080连接拒绝问题
问题重现
使用Postman或curl测试自研Ballerina服务时,持续报错:
curl: (7) Failed to connect to localhost port 8080 after 0 ms: Connection refused
排查步骤
1. 确认Ballerina服务已成功启动
连接拒绝的核心原因通常是服务未正常运行:
- 执行
bal run启动代码,观察终端输出,必须出现类似Started HTTP/1.1 listener on localhost:8080的启动日志,才说明服务已监听端口。 - 如果启动时出现编译或运行时错误,优先解决这些错误(比如依赖缺失、语法问题)。
2. 检查端口8080是否被占用
若端口被其他进程占用,Ballerina服务无法正常监听:
- Linux/macOS:执行
lsof -i :8080或netstat -tulpn | grep :8080,查看占用进程的PID,用kill <PID>终止进程。 - Windows:执行
netstat -ano | findstr :8080,找到PID后在任务管理器中结束对应进程。 - 也可以修改Ballerina代码中的端口号(比如改为8081),同时更新curl请求的地址。
3. 核对服务路径与请求路径的匹配性
你的服务定义为service /on new http:Listener(8080),资源函数createUser和getAllUsers对应的路径分别是/createUser和/getAllUsers,当前curl命令的路径是正确的,但需确保服务启动时资源已正确注册(启动日志会列出注册的资源路径)。
4. 检查防火墙/安全软件拦截
本地防火墙、杀毒软件可能会拦截8080端口的入站请求:
- 临时关闭防火墙或安全软件,重新测试连接。
- 若测试通过,将Ballerina程序添加到防火墙的允许列表中。
5. 验证代码的语法与运行状态
- 执行
bal build编译代码,检查是否有编译错误(你的代码中sucesfully是拼写错误,但不影响服务启动,可忽略或修正)。 - 确认
table<User>和Userrecord的定义符合Ballerina语法,无逻辑错误。
测试示例
完成上述排查后,按以下步骤重新测试:
- 编译代码:
bal build
- 启动服务,确认启动日志正常:
bal run
- 执行curl请求:
curl -X POST -H "Content-Type: application/json" -d '{"id": "1", "name": "John", "age": 30}' http://localhost:8080/createUser
curl http://localhost:8080/getAllUsers
内容的提问来源于stack exchange,提问作者NEON HAMPER
相关产品推荐
相关产品推荐

