我需要向嵌入式Tomcat添加一个AJP连接器,并禁用(或替换)侦听8080 的默认连接器.
我尝试使用EmbeddedServletContainerCustomizer进行自定义,但我无法获取Tomcat对象的句柄来替换在那里创建的默认连接器.因此,除了我的AJP端口之外,我最终得到了8080上的http端口.
接下来,我尝试扩展TomcatEmbeddedServletContainerFactory并覆盖其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);
}
});
}
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8240 次 |
| 最近记录: |