我可以自己独立运行WebServicehttpServer,但是当我同时运行它们时,Web服务wsdl URL不再起作用。我希望这样做,以便可以将JavaScript的网络服务调用到相同的URL,而不会出现跨源问题。

这有可能吗?

public class Main {
    public static void main(String[] args) throws Exception {
        int port = 8888;
        /* This works without httpServer running */
        Endpoint.publish("http://localhost:" + port + "/ws/someService", new SomeService());
        /* This works without Endpoint running */
        HttpServer httpServer = HttpServer.create(new InetSocketAddress(port), 0);
        httpServer.createContext("/someHandler", new SomeHandler());
    }
}

最佳答案

尝试使用其他端口。例如,如果您将8888用于端点,则将8890或其他用于HttpServer。

EndPoint使用嵌入式HTTP Server实现,该实现包含在Java中。
因此,您实际上是在尝试在同一端口上使用两个不同的HTTP服务器,我认为这是行不通的。您应该使用其他端口来完成这项工作。

10-08 14:12