Due to a few changes in `WebSocketServerFactory` and `Session` API, our
`JettyRequestUpgradeStrategy` and `JettyWebSocketSession` needed to
adapt. As of 9.3.15+ and 9.4.0+, some reflection is required to support
previous versions.
Spring 5.0 supports Jetty 9.3 and 9.4.
Issue: SPR-14940
// As of Jetty 9.4, UpgradeRequest and UpgradeResponse are interfaces instead of classes
privatestaticfinalbooleanisJetty94;
privatestaticMethodgetUpgradeRequest;
privatestaticMethodgetUpgradeResponse;
privatestaticMethodgetRequestURI;
privatestaticMethodgetHeaders;
privatestaticMethodgetAcceptedSubProtocol;
privatestaticMethodgetExtensions;
privatestaticMethodgetUserPrincipal;
privateStringid;
privateURIuri;
@ -61,6 +77,23 @@ public class JettyWebSocketSession extends AbstractWebSocketSession<Session> {
@@ -61,6 +77,23 @@ public class JettyWebSocketSession extends AbstractWebSocketSession<Session> {
@ -164,20 +197,64 @@ public class JettyWebSocketSession extends AbstractWebSocketSession<Session> {
@@ -164,20 +197,64 @@ public class JettyWebSocketSession extends AbstractWebSocketSession<Session> {
@ -68,53 +67,39 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -68,53 +67,39 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@ -127,7 +112,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -127,7 +112,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@ -149,10 +134,10 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -149,10 +134,10 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
if(!isRunning()){
this.running=true;
try{
this.factory.init(this.servletContext);
this.factoryAdapter.start();
}
catch(Exceptionex){
thrownewIllegalStateException("Unable to initialize Jetty WebSocketServerFactory",ex);
thrownewIllegalStateException("Unable to start Jetty WebSocketServerFactory",ex);
}
}
}
@ -160,8 +145,13 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -160,8 +145,13 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@Override
publicvoidstop(){
if(isRunning()){
this.running=false;
this.factory.cleanup();
try{
this.running=false;
this.factoryAdapter.stop();
}
catch(Exceptionex){
thrownewIllegalStateException("Unable to stop Jetty WebSocketServerFactory",ex);
}
}
}
@ -176,7 +166,8 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -176,7 +166,8 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@ -186,7 +177,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -186,7 +177,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@ -210,7 +201,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -210,7 +201,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
this.handler=handler;
this.selectedProtocol=protocol;
if(CollectionUtils.isEmpty(extensions)){
this.extensionConfigs=null;
this.extensionConfigs=newArrayList<>();
}
else{
this.extensionConfigs=newArrayList<>();
@ -233,4 +224,69 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -233,4 +224,69 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life