如何為 spring-boot 嵌入式 Web 服務器配置低級選項(在我的具體情況下,我使用的是 Tomcat)?
例如,我想設定SO_REUSEADDR為 true。
uj5u.com熱心網友回復:
這個答案是 Tomcat 特定的
事實證明,這可以通過TomcatConnectorCustomizer bean 實作,例如
@Bean
public TomcatConnectorCustomizer tomcatConnectorCustomizer() {
return connector -> connector.setProperty("socket.soReuseAddress", "true");
}
它是如何作業的?
connector.setProperty實作了IntrospectionUtils.setProperty它查找具有匹配名稱的 bean 屬性,如果失敗,則使用getProperty連接器的ProtocolHandler.
在我的例子中,ProtocolHandler在其超類org.apache.coyote.http11.Http11NioProtocol中有一個setProperty,org.apache.coyote.AbstractProtocol最終呼叫了setProperty。org.apache.tomcat.util.net.AbstractEndpoint
然后該方法用前綴區分屬性socket.,并再次反射地將其與org.apache.tomcat.util.net.SocketProperties訪問器匹配(在我們的例子中為 setSoReuseAddress)。
最后,當創建套接字時,在配置新套接字時使用存盤的配置。
還應該注意(同樣,這是 Tomcat 特定的)Tomcat 也使用 JVM 默認值(鏈接)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/485909.html
