提交 6eea4ad6 编写于 作者: R Rossen Stoyanchev

Upgrade websocket module to servlet api 3.1.0

上级 7823c5d6
......@@ -493,7 +493,7 @@ project("spring-websocket") {
compile(project(":spring-core"))
compile(project(":spring-context"))
compile(project(":spring-web"))
optional("javax.servlet:javax.servlet-api:3.1-b09")
optional("javax.servlet:javax.servlet-api:3.1.0")
optional("javax.websocket:javax.websocket-api:1.0")
optional("org.apache.tomcat:tomcat-websocket:8.0-SNAPSHOT") {
exclude group: "org.apache.tomcat", module: "tomcat-websocket-api"
......
......@@ -37,6 +37,7 @@ import org.glassfish.tyrus.server.TyrusEndpoint;
import org.glassfish.tyrus.servlet.TyrusHttpUpgradeHandler;
import org.glassfish.tyrus.websockets.Connection;
import org.glassfish.tyrus.websockets.Version;
import org.glassfish.tyrus.websockets.WebSocketApplication;
import org.glassfish.tyrus.websockets.WebSocketEngine;
import org.glassfish.tyrus.websockets.WebSocketEngine.WebSocketHolderListener;
import org.springframework.http.HttpHeaders;
......@@ -80,28 +81,28 @@ public class GlassFishRequestUpgradeStrategy extends AbstractStandardUpgradeStra
HttpServletResponse servletResponse = ((ServletServerHttpResponse) response).getServletResponse();
servletResponse = new AlreadyUpgradedResponseWrapper(servletResponse);
TyrusEndpoint tyrusEndpoint = createTyrusEndpoint(servletRequest, endpoint, selectedProtocol);
WebSocketApplication wsApp = createTyrusEndpoint(servletRequest, endpoint, selectedProtocol);
WebSocketEngine engine = WebSocketEngine.getEngine();
try {
engine.register(tyrusEndpoint);
engine.register(wsApp);
}
catch (DeploymentException ex) {
throw new HandshakeFailureException("Failed to deploy endpoint in GlassFish", ex);
}
try {
if (!performUpgrade(servletRequest, servletResponse, request.getHeaders(), tyrusEndpoint)) {
if (!performUpgrade(servletRequest, servletResponse, request.getHeaders(), wsApp)) {
throw new HandshakeFailureException("Failed to upgrade HttpServletRequest");
}
}
finally {
engine.unregister(tyrusEndpoint);
engine.unregister(wsApp);
}
}
private boolean performUpgrade(HttpServletRequest request, HttpServletResponse response,
HttpHeaders headers, TyrusEndpoint tyrusEndpoint) throws IOException {
HttpHeaders headers, WebSocketApplication wsApp) throws IOException {
final TyrusHttpUpgradeHandler upgradeHandler;
try {
......@@ -114,7 +115,7 @@ public class GlassFishRequestUpgradeStrategy extends AbstractStandardUpgradeStra
Connection connection = createConnection(upgradeHandler, response);
RequestContext wsRequest = RequestContext.Builder.create()
.requestURI(URI.create(tyrusEndpoint.getPath())).requestPath(tyrusEndpoint.getPath())
.requestURI(URI.create(wsApp.getPath())).requestPath(wsApp.getPath())
.connection(connection).secure(request.isSecure()).build();
for (String header : headers.keySet()) {
......@@ -129,7 +130,8 @@ public class GlassFishRequestUpgradeStrategy extends AbstractStandardUpgradeStra
});
}
private TyrusEndpoint createTyrusEndpoint(HttpServletRequest request, Endpoint endpoint, String selectedProtocol) {
private WebSocketApplication createTyrusEndpoint(HttpServletRequest request,
Endpoint endpoint, String selectedProtocol) {
// Use randomized path
String requestUri = request.getRequestURI();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册