Spring boot Spring Boot-更换默认的嵌入式Tomcat连接器
我需要向嵌入式Tomcat添加一个AJP连接器,并禁用(或替换)在8080上侦听的默认连接器 我已经尝试过用EmbeddedServletContainerCustomizer定制它,但是我无法获得Tomcat对象的句柄来替换在那里创建的默认连接器。结果,除了AJP端口外,我在8080上还有http端口 接下来,我尝试了扩展和重写其getTomcatEmbeddedServletContainer方法。根据JavaDoc,这似乎是替换默认连接器的最佳位置,但它仍然被启用(并且也不会创建我的AJP连接器)。你知道我可能遗漏了什么吗?我已经用调试器验证了我的配置正在运行 根据下面的答案,这里是最干净的解决方案:Spring boot Spring Boot-更换默认的嵌入式Tomcat连接器,spring-boot,Spring Boot,我需要向嵌入式Tomcat添加一个AJP连接器,并禁用(或替换)在8080上侦听的默认连接器 我已经尝试过用EmbeddedServletContainerCustomizer定制它,但是我无法获得Tomcat对象的句柄来替换在那里创建的默认连接器。结果,除了AJP端口外,我在8080上还有http端口 接下来,我尝试了扩展和重写其getTomcatEmbeddedServletContainer方法。根据JavaDoc,这似乎是替换默认连接器的最佳位置,但它仍然被启用(并且也不会创建我的AJP
@Bean
public EmbeddedServletContainerFactory tomcat() {
TomcatEmbeddedServletContainerFactory myFactory = new TomcatEmbeddedServletContainerFactory();
myFactory.setProtocol("AJP/1.3");
myFactory.setPort(9000);
return myFactory;
}
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer2() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
tomcat.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
connector.setRedirectPort(9001);
}
});
}
};
}
您可以使用
TomcatConnectorCustomizer
将现有连接器添加到TomcatEmbeddedServletContainerFactory
中,从而将其配置为使用AJP 只需创建一个EmbeddedServletContainerCustomizer
bean并将其重新配置为AJP:
@Configuration
public class ServletConfig {
// AJP port defined in properties (default 666)
@Value("${tomcat.ajp.port:666}")
private Integer ajpPort;
@Bean
public EmbeddedServletContainerCustomizer ajpContainerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
tomcat.setProtocol("AJP/1.3");
tomcat.setPort(ajpPort);
}
};
}
}
“connector.setRedirectPort(9001)”的用途是什么??