gpt4 book ai didi

java - Mod_Cluster LifecycleListeners Spring Boot

转载 作者:行者123 更新时间:2023-11-30 05:46:03 25 4
gpt4 key购买 nike

我正在将我的项目 Spring 迁移到 Spring Boot。但我面临一个问题,我们有一个使用 apache2 和 mod_cluster 的反向代理。在实际版本中,我们在 server.xml 中声明一个Listerner。

<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="false" proxyList="${proxyList}" />

我把它当作 Spring boot 应用程序。

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);
}

};
}

这对我有用!

关于java - Mod_Cluster LifecycleListeners Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54817900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com