在Apache Flink中运行Jar包后无法访问REST端点的问题求助
解决Flink运行Jar后无法访问自定义REST端点的问题
1. 修正端口与绑定地址
- 你的代码中HttpServer绑定的是
localhost:8001,但你尝试访问的是http://localhost:9001/xyz,端口不匹配,请统一访问端口为8001。 - 将绑定地址从
localhost改为0.0.0.0,允许外部或Flink集群节点的其他地址访问:server = HttpServer.create(new InetSocketAddress("0.0.0.0", 8001), 0);
2. 阻止Flink客户端进程退出
使用flink run提交Jar时,main方法作为Flink客户端代码执行,执行完成后进程会直接退出,导致你启动的HttpServer也随之终止。需要在main方法中添加阻塞逻辑,保持进程存活:
在localServer.startServer();后加入以下代码:
// 让主线程持续阻塞,直到收到中断信号 Thread.currentThread().join();
或者用循环等待替代:
while (true) { Thread.sleep(1000); }
3. 确认网络访问权限
- 若Flink运行在容器或集群环境中,需确保8001端口未被防火墙、容器网络策略拦截。
- 若是Session集群模式,确认集群节点的8001端口可被外部访问。
4. 排查类加载冲突
确保HttpServer相关依赖(如JDK自带的com.sun.net.httpserver包)未被Flink类加载器拦截。JDK原生类通常无此问题,若使用第三方HTTP服务器,需确认依赖已正确打包进Jar包。
内容的提问来源于stack exchange,提问作者rikki
相关产品推荐
相关产品推荐

