我有一個 Spring Boot 服務器,我希望它能夠與無法或不愿意處理permessage-deflate壓縮訊息的websocket 客戶端進行通信。我從關于該主題的這兩個類似問題(鏈接如下)中知道,我可以添加 VM 引數-Dorg.apache.tomcat.websocket.DISABLE_BUILTIN_EXTENSIONS=true來禁用 Tomcat 的默認 deflate 壓縮。
- Tomcat JSR356 Websocket - 禁用 permessage-deflate 壓縮
- Spring 禁用 websocket 壓縮 -> Sec-WebSocket-Extensions: permessage-deflate
但是,我計劃制作一個可以分發的程式,以便其他人可以運行它,并且不得不強迫人們記住始終包含特定的 VM 引數只是為了更改設定似乎很麻煩。
是否有一些替代方法可以禁用 Tomcat 的 websocket 壓縮,它不需要用戶在運行時指定 VM 引數,也許使用 Spring 的 Java 配置或自定義 websocket 握手攔截器?
uj5u.com熱心網友回復:
您不僅可以使用 JVM 引數設定屬性,還可以使用System.setProperty如下方式以編程方式設定屬性:
System.setProperty("org.apache.tomcat.websocket.DISABLE_BUILTIN_EXTENSIONS",String.valueOf(true));
如果使用嵌入式 tomcat 將專案匯出到 JAR 檔案,則可以main在執行之前在其中運行它SpringApplication.run:
public static void main(String[] args) {
System.setProperty("org.apache.tomcat.websocket.DISABLE_BUILTIN_EXTENSIONS",String.valueOf(true));
SpringApplication.run(YourApplicationClass.class,args);
}
如果您將應用程式打包為 WAR 檔案,您可以嘗試以下操作:
@SpringBootApplication
public class YourApplicationClass extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
System.setProperty("org.apache.tomcat.websocket.DISABLE_BUILTIN_EXTENSIONS",String.valueOf(true));
return application.sources(YourApplicationClass.class);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/362859.html
上一篇:自定義控制元件中的焦點條目
