我需要将AJP连接器添加到嵌入式Tomcat并 禁用(或替换) 侦听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); } }); } }; }
您可以使用将A TomcatConnectorCustomizer连接器添加到中,以将其配置为使用AJP TomcatEmbeddedServletContainerFactory。
TomcatConnectorCustomizer
TomcatEmbeddedServletContainerFactory