[英]Sprint Boot Servlet Registration on a different port
我有一个带有@RestController 的 spring-boot 应用程序,需要在不同的端口上注册一个 servlet,而 RestController 绑定到默认端口。
我有一个 application.yml 文件和一个 src>main>resources>application.properties 文件。
这是我的 Servlet 注册 class
@Configuration
public class ServletConfig {
private static final Logger LOGGER = LoggerFactory.getLogger (ServletConfig.class);
@Bean
public ServletRegistrationBean<MyServlet> servletRegistrationBean(final ServletContext servletContext){
LOGGER.info("Inside ServletRegistrationBean");
final ServletRegistrationBean <MyServlet> bean = new ServletRegistrationBean <> (new MyServlet (), true, "/endpoint");
bean.setLoadOnStartup (1);
return bean;
}
这是我的 MyServlet class:
公共 class MyServlet 扩展 AbstractXServlet{ 私有 static 最终 Logger LOGGER = LoggerFactory.getLogger (MyServlet.class);
public MyServlet() {
LOGGER.info("Inside MyServlet Constructor");
settings().setMultipartEnabled(false);
final ServletHandlerr servletHandlerr = new ServletHandlerr();
//Http POST Only
handlerRegistry().registerHandler(EHttpMethod.POST, servletHandlerr);
}
}
我想在我的 application.properties 文件中定义 servlet 的端口,与所有 RestController 端点所在的默认端口不同。 但是现在,我无法打印任何日志消息。 不知道我做错了什么。 非常感谢任何帮助。
我想在我的 application.properties 文件中定义 servlet 的端口,与所有 RestController 端点所在的默认端口不同
...这实质上意味着您想要一个单独的 web 服务器,在与应用程序的 rest 不同的端口上运行。 就个人而言,我会为此目的创建一个完全独立的SpringBootApplication
。
但是,如果您坚持将其捆绑在一个应用程序中,您可以创建一个额外的嵌入式容器,该容器不注册默认 servlet ( .setRegisterDefaultServlet(false)
),而只注册您的自定义 servlet。
您需要确保您的自定义工厂不会覆盖应用程序的 rest 将绑定到的嵌入式容器的通常自动配置。 您可能需要复制默认 servlet 的原始ServletWebServerFactoryConfiguration
的一部分,并将其标记为@Primary
以将其与您的自定义 servlet 容器区分开来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.