У меня есть контейнер Jetty в главном контексте приложения, работающий по порту 8080 путь /. Текущее состояние таково, что службы мыла настроены на подпуть / ws, но на том же порту.
@EnableWs
@Configuration
public class SoapConfiguration extends WsConfigurationSupport {
@Bean
public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean<>(servlet, "/ws/*");
}
}
Я хочу, чтобы остальная часть веб-API работала на порте 8080, но все классы @Endpoint находятся на другом порту, скажем, 8003.
Я понимаю, что возможное решение состоит в том, чтобы создавать различные модули и объединять их вместе с иерархией контекста приложения https://www.baeldung.com/spring-boot-context-hierarchy.
Но так как все, что я хочу, это всего лишь один аннотированный бин @Endpoint, чтобы жить в отдельном контексте, я бы хотел найти решение, в котором мне не нужно разбивать их на разные модули. Я предполагаю, что идея состоит в том, чтобы создать дочерний контекст приложения, который содержит фабрику JettyServletWebServerFactory
и конечную точку, но я, кажется, не могу реализовать это технически.