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 4.3 websocket officially supports Jetty 9.1 to 9.3.
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> {
@ -131,7 +114,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -131,7 +114,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@ -153,15 +136,10 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -153,15 +136,10 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
if(!isRunning()){
this.running=true;
try{
if(webSocketFactoryInitMethod!=null){
webSocketFactoryInitMethod.invoke(this.factory);
}
else{
this.factory.init(this.servletContext);
}
this.factoryAdapter.start();
}
catch(Exceptionex){
thrownewIllegalStateException("Unable to initialize Jetty WebSocketServerFactory",ex);
thrownewIllegalStateException("Unable to start Jetty WebSocketServerFactory",ex);
}
}
}
@ -169,8 +147,13 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -169,8 +147,13 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@Override
publicvoidstop(){
if(isRunning()){
this.running=false;
this.factory.cleanup();
try{
this.running=false;
factoryAdapter.stop();
}
catch(Exceptionex){
thrownewIllegalStateException("Unable to stop Jetty WebSocketServerFactory",ex);
}
}
}
@ -185,7 +168,8 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -185,7 +168,8 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@ -195,7 +179,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -195,7 +179,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@ -219,7 +203,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -219,7 +203,7 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@ -242,4 +226,74 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
@@ -242,4 +226,74 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life