使用内置的Java JAX-WS Web服务器发布多个端点
作者:互联网
因此,我有2个Web服务接口类的实现,即Impl1和Impl2.我想在相同的域和端口下发布但使用不同的URL:
http://some.domain.asd/ws1和http://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.
标签:built-in,jax-ws,publish,web-services,java 来源: https://codeday.me/bug/20191029/1957938.html