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

因此,我有2个Web服务接口类的实现,即Impl1和Impl2.我想在相同的域和端口下发布但使用不同的URL:

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

显然,我应该能够创建一个配置,其中有2个端点,每个实现一个,绑定到一个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地址.

您发现它正在运行:
Windows:ipconfig
Unix:ifconfig

看起来像这样:192.168.100.55.

上一篇:nrm 常用命令


下一篇:Gitlab+Jenkins持续部署配置