管理统一依赖版本:spring-boot-dependencies:3.0.7
第一种处理方式:
@Slf4j
@Configuration
@EnableConfigurationProperties(UndertowConfig.UndertowWebSocketProperties.class)
public class UndertowConfig implements WebServerFactoryCustomizer<UndertowServletWebServerFactory> {
private static final String WEBSOCKET_DEPLOYMENT_INFO_KEY = "io.undertow.websockets.jsr.WebSocketDeploymentInfo";
private final UndertowWebSocketProperties properties;
public UndertowConfig(UndertowWebSocketProperties properties) {
this.properties = properties;
}
@Override
public void customize(UndertowServletWebServerFactory factory) {
factory.addDeploymentInfoCustomizers(deploymentInfo -> {
WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(
properties.isDirectBuffers(),
properties.getBufferSize()
));
deploymentInfo.addServletContextAttribute(WEBSOCKET_DEPLOYMENT_INFO_KEY, webSocketDeploymentInfo);
log.info("Undertow WebSocket buffer pool has been configured with directBuffers: {}, bufferSize: {}",
properties.isDirectBuffers(), properties.getBufferSize());
});
}
@Setter
@Getter
@ConfigurationProperties(prefix = "undertow.websocket")
public static class UndertowWebSocketProperties {
private boolean directBuffers = false;
private int bufferSize = 1024;
}
}
第二种方式:
通过maven 包引入进行排除相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
<exclusions>
<exclusion>
<groupId>io.undertow</groupId>
<artifactId>undertow-websockets-jsr</artifactId>
</exclusion>
</exclusions>
</dependency>