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

Docker部署Java SOAP服务后无法访问的问题排查与解决

问题原因及修复方案

核心原因

你的SOAP服务启动时绑定了localhost(即127.0.0.1),这意味着服务仅监听容器内部的回环网络接口。Docker的端口映射是将宿主机的端口转发到容器的网络接口,但容器内部的localhost和宿主机的localhost属于完全独立的网络空间,因此宿主机的请求无法被容器内的服务接收。

修复步骤

1. 修改服务绑定地址

将代码中Endpoint.publish的地址从http://localhost:8080/echoservice改为http://0.0.0.0:8080/echoservice。0.0.0.0表示绑定容器的所有网络接口,这样就能接收来自外部的请求:

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class EchoService {
    @WebMethod
    public String echo(@WebParam(name = "message") String message) {
        return message;
    }

    public static void main(String[] args) {
        // 绑定到容器所有网络接口
        Endpoint.publish("http://0.0.0.0:8080/echoservice", new EchoService());
        System.out.println("Service published at http://0.0.0.0:8080/echoservice");
    }
}

2. 重新构建并启动容器

执行以下命令重新构建镜像并启动容器:

docker build -t java-soap:1.0 .
docker run -p 8080:8080 java-soap:1.0

验证

容器启动后,访问http://localhost:8080/echoservice,即可正常访问SOAP服务的WSDL页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:17:47