diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Request.java b/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Request.java index 61691455242..66de5a7d94e 100644 --- a/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Request.java +++ b/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Request.java @@ -374,6 +374,7 @@ protected Object initialValue() { return f; } }; + protected SimpleDateFormat formats[]; // END OF SJSAS 6231069 /** @@ -589,6 +590,11 @@ protected synchronized Object initialValue() { private boolean isDefaultContext = false; // END GlassFish 1024 private String requestURI = null; + + + // FIX GLASSFISH-21007 + private boolean handlerInitialised = false; + /** * Coyote request. */ @@ -3170,6 +3176,14 @@ public T upgrade(Class handlerClass) coyoteRequest.getResponse().suspend(); return handler; } + + public void initialiseHttpUpgradeHandler(WebConnection wc) { + // ensure the handler is only initialised once + if (!handlerInitialised && httpUpgradeHandler != null) { + httpUpgradeHandler.init(wc); + handlerInitialised = true; + } + } public WebConnection getWebConnection() { return webConnection; diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardPipeline.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardPipeline.java index 316dc2a9015..bc297e678e9 100644 --- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardPipeline.java +++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardPipeline.java @@ -774,14 +774,14 @@ private void doInvoke(Request request, Response response, boolean chaining) Context context = req.getContext(); try { context.fireContainerEvent(ContainerEvent.BEFORE_UPGRADE_HANDLER_INITIALIZED, handler); - handler.init(wc); + req.initialiseHttpUpgradeHandler(wc); } finally { context.fireContainerEvent(ContainerEvent.AFTER_UPGRADE_HANDLER_INITIALIZED, handler); } } else { log.log(Level.SEVERE, PROTOCOL_HANDLER_REQUIRED_EXCEPTION); } - req.setUpgrade(false); + //req.setUpgrade(false); } } }