Skip to content

Commit 346b38d

Browse files
committed
move custom websocket configuration to high-level
motivation: make JettyServer and SteveAppContext as small as possible to ease the spring boot switch
1 parent b28fd2c commit 346b38d

File tree

3 files changed

+21
-16
lines changed

3 files changed

+21
-16
lines changed

src/main/java/de/rwth/idsg/steve/JettyServer.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,6 @@ public void start() throws Exception {
141141

142142
if (server != null) {
143143
server.start();
144-
steveAppContext.configureWebSocket();
145144
}
146145
}
147146

src/main/java/de/rwth/idsg/steve/SteveAppContext.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
*/
1919
package de.rwth.idsg.steve;
2020

21-
import jakarta.servlet.DispatcherType;
2221
import org.apache.cxf.transport.servlet.CXFServlet;
2322
import org.apache.tomcat.InstanceManager;
2423
import org.apache.tomcat.SimpleInstanceManager;
@@ -27,29 +26,27 @@
2726
import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
2827
import org.eclipse.jetty.ee10.servlet.ServletHolder;
2928
import org.eclipse.jetty.ee10.webapp.WebAppContext;
30-
import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketServerContainer;
3129
import org.eclipse.jetty.rewrite.handler.RedirectPatternRule;
3230
import org.eclipse.jetty.rewrite.handler.RewriteHandler;
3331
import org.eclipse.jetty.server.Handler;
3432
import org.eclipse.jetty.server.handler.ContextHandler;
3533
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
3634
import org.eclipse.jetty.server.handler.gzip.GzipHandler;
3735
import org.eclipse.jetty.util.component.AbstractLifeCycle;
38-
import org.eclipse.jetty.websocket.core.WebSocketConstants;
3936
import org.springframework.core.io.ClassPathResource;
4037
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
4138
import org.springframework.web.context.ContextLoaderListener;
4239
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
4340
import org.springframework.web.filter.DelegatingFilterProxy;
4441
import org.springframework.web.servlet.DispatcherServlet;
4542

43+
import jakarta.servlet.DispatcherType;
44+
4645
import java.io.IOException;
4746
import java.util.EnumSet;
4847
import java.util.HashSet;
4948

5049
import static de.rwth.idsg.steve.SteveConfiguration.CONFIG;
51-
import static de.rwth.idsg.steve.config.WebSocketConfiguration.IDLE_TIMEOUT;
52-
import static de.rwth.idsg.steve.config.WebSocketConfiguration.MAX_MSG_SIZE;
5350

5451
/**
5552
* @author Sevket Goekay <[email protected]>
@@ -73,15 +70,6 @@ public ContextHandlerCollection getHandlers() {
7370
);
7471
}
7572

76-
/**
77-
* Otherwise, defaults come from {@link WebSocketConstants}
78-
*/
79-
public void configureWebSocket() {
80-
JettyWebSocketServerContainer container = JettyWebSocketServerContainer.getContainer(webAppContext.getServletContext());
81-
container.setMaxTextMessageSize(MAX_MSG_SIZE);
82-
container.setIdleTimeout(IDLE_TIMEOUT);
83-
}
84-
8573
private Handler getWebApp() {
8674
if (!CONFIG.getJetty().isGzipEnabled()) {
8775
return webAppContext;

src/main/java/de/rwth/idsg/steve/config/WebSocketConfiguration.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@
2626
import de.rwth.idsg.steve.service.ChargePointRegistrationService;
2727
import lombok.RequiredArgsConstructor;
2828
import lombok.extern.slf4j.Slf4j;
29+
import org.eclipse.jetty.websocket.core.WebSocketConstants;
2930
import org.springframework.context.annotation.Configuration;
3031
import org.springframework.web.socket.config.annotation.EnableWebSocket;
3132
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
3233
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
34+
import org.springframework.web.socket.server.jetty.JettyRequestUpgradeStrategy;
3335
import org.springframework.web.socket.server.support.DefaultHandshakeHandler;
3436

3537
import java.time.Duration;
@@ -57,7 +59,7 @@ public class WebSocketConfiguration implements WebSocketConfigurer {
5759
@Override
5860
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
5961
OcppWebSocketHandshakeHandler handshakeHandler = new OcppWebSocketHandshakeHandler(
60-
new DefaultHandshakeHandler(),
62+
defaultHandshakeHandler(),
6163
Lists.newArrayList(ocpp16WebSocketEndpoint, ocpp15WebSocketEndpoint, ocpp12WebSocketEndpoint),
6264
chargePointRegistrationService
6365
);
@@ -66,4 +68,20 @@ public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
6668
.setHandshakeHandler(handshakeHandler)
6769
.setAllowedOrigins("*");
6870
}
71+
72+
/**
73+
* https://docs.spring.io/spring-framework/reference/web/websocket/server.html#websocket-server-runtime-configuration
74+
*
75+
* Otherwise, defaults come from {@link WebSocketConstants}
76+
*/
77+
private static DefaultHandshakeHandler defaultHandshakeHandler() {
78+
JettyRequestUpgradeStrategy strategy = new JettyRequestUpgradeStrategy();
79+
80+
strategy.addWebSocketConfigurer(configurable -> {
81+
configurable.setMaxTextMessageSize(MAX_MSG_SIZE);
82+
configurable.setIdleTimeout(IDLE_TIMEOUT);
83+
});
84+
85+
return new DefaultHandshakeHandler(strategy);
86+
}
6987
}

0 commit comments

Comments
 (0)