[英]Mod_Cluster LifecycleListeners Spring Boot
我正在將我的項目 Spring 遷移到 Spring Boot。 但是我遇到了一個問題,我們有一個使用 apache2 和 mod_cluster 的反向代理。 在實際版本中,我們在 server.xml 中聲明了一個 Listerner。
<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="false" proxyList="${proxyList}" />
我把它當作一個 Spring 啟動應用程序。
private Connector ajpConnector() {
Connector connector = new Connector("AJP/1.3");
connector.setPort(8009);
connector.setRedirectPort(8443);
return connector;
}
private ModClusterListener modCluster() {
ModClusterListener modClusterListener = new ModClusterListener();
modClusterListener.setAdvertise(false);
modClusterListener.setProxyURL(proxyUrl);
return modClusterListener;
}
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> servletContainer() {
return server -> {
if (server != null) {
server.addContextLifecycleListeners(modCluster());
server.addAdditionalTomcatConnectors(ajpConnector());
}
};
}
但它不起作用,ModClusterListener 想要一個 Sever 類型的 LifecycleEvent,但它永遠不會發生。 誰能幫我?
我在 Gitter 上發布了這個問題,Andy Wilkinson 幫助了我。
“從你所說的來看,聽起來像 ModClusterListener 需要添加到 Tomcat 的服務器,但你使用的方法會將它添加到上下文中。你可以使用上下文定制器並從上下文向上導航,直到找到服務器或者您可以改用 TomcatServletWebServerFactory 子類:”
@Bean
public TomcatServletWebServerFactory tomcatFactory() {
return new TomcatServletWebServerFactory() {
@Override
protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) {
tomcat.getServer().addLifecycleListener(modCluster());
return new TomcatWebServer(tomcat);
}
};
}
它對我有用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.