gpt4 book ai didi

java - 使用内置 Java JAX-WS Web 服务器发布多个端点

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:28 25 4
gpt4 key购买 nike

所以我有 2 个 Web 服务接口(interface)类的实现,Impl1 和 Impl2。我想在相同的域和端口下发布,但使用不同的 URLS:

http://some.domain.asd/ws1http://some.domain.asd/ws2

显然,我应该能够创建一个配置,其中我有 2 个端点,每个实现一个,绑定(bind)到单个 Web 服务器实例。

请注意,我不是部署而是使用 Java 7 内部发布机制。我注意到,而不是打电话

Endpoint.publish(URL, new Implementor());

要直接发布一个网络服务,我可以调用

Endpoint ep = Endpoint.create(new Implementor());
ep.publish(serverContext);

在特定的 serverContext 上发布 Implementor。这样的 serverContext 到底是什么,我该如何使用它?我注意到 publish 方法实例化了一个 javax.xml.ws.spi.Provider 类并将其用于发布目的。但这显然不是我想要的。理想情况下,我想要一个类似这样的解决方案:

Object serverContext = new Server(URL);
Endpoint impl1 = Endpoint.create(new Impl1());
Endpoint impl2 = Endpoint.create(new Impl2());
impl1.publish(serverContext);
impl2.publish(serverContext);

这甚至可以通过内置发布系统来完成,也许使用 EndpointReferences 对象?或者我是否需要使用 Web 服务容器来单独部署我的端点?

最佳答案

可以使用以下代码实现发布在同一端口上运行的多个端点:

@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
Endpoint.publish("http://localhost:8888/ws/send", new SendServiceImpl());
Endpoint.publish("http://localhost:8888/ws/send23", new SendServiceImpl());
}
}

在 Eclipse 中本地运行它可以工作,但是当你将它部署到另一台服务器时它就坏了。
要解决此问题,您可以使用 http://0.0.0.0:8888而不是 localhost 或服务器的正确内部 ip 地址。

你发现它正在运行:窗口:ipconfigunix:ifconfig

它看起来像这样:192.168.100.55。

关于java - 使用内置 Java JAX-WS Web 服务器发布多个端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com