Author: markt
Date: Thu Mar 21 13:09:41 2013
New Revision: 1459288
URL: http://svn.apache.org/r1459288
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54734
Partial fix
javax.servlet.http.WebConnection needs to extend AutoCloseable
Based on a patch by Nick Williams
Modified:
tomcat/trunk/java/javax/servlet/http/WebConnection.java
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AbstractProcessor.java
tomcat/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
Modified: tomcat/trunk/java/javax/servlet/http/WebConnection.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/http/WebConnection.java?rev=1459288&r1=1459287&r2=1459288&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/http/WebConnection.java (original)
+++ tomcat/trunk/java/javax/servlet/http/WebConnection.java Thu Mar 21 13:09:41
2013
@@ -27,7 +27,7 @@ import javax.servlet.ServletOutputStream
*
* @since Servlet 3.1
*/
-public interface WebConnection {
+public interface WebConnection extends AutoCloseable {
/**
* Provides access to the {@link ServletInputStream} for reading data from
Modified:
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AbstractProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/AbstractProcessor.java?rev=1459288&r1=1459287&r2=1459288&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/AbstractProcessor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/AbstractProcessor.java
Thu Mar 21 13:09:41 2013
@@ -52,6 +52,15 @@ public abstract class AbstractProcessor<
}
+ // --------------------------------------------------- AutoCloseable
methods
+
+ @Override
+ public void close() throws Exception {
+ upgradeServletInputStream.close();
+ upgradeServletOutputStream.close();
+ }
+
+
// --------------------------------------------------- WebConnection
methods
@Override
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties?rev=1459288&r1=1459287&r2=1459288&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties
(original)
+++
tomcat/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties
Thu Mar 21 13:09:41 2013
@@ -24,6 +24,7 @@ serverContainer.servletContextMissing=No
uriTemplate.noMatch=The input template [{0}] generated the pattern [{1}] which
did not match the supplied pathInfo [{2}]
+wsHttpUpgradeHandler.destroyFailed=Failed to close WebConnection while
destroying the WebSocket HttpUpgradeHandler
wsHttpUpgradeHandler.noPreInit=The preInit() method must be called to
configure the WebSocket HttpUpgradeHandler before the container calls init().
Usually, this means the Servlet that created the WsHttpUpgradeHandler instance
should also call preInit()
wsRemoteEndpointServer.closeFailed=Failed to close the ServletOutputStream
connection cleanly
\ No newline at end of file
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java?rev=1459288&r1=1459287&r2=1459288&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
(original)
+++
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
Thu Mar 21 13:09:41 2013
@@ -32,6 +32,8 @@ import javax.websocket.DeploymentExcepti
import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.res.StringManager;
import org.apache.tomcat.websocket.WsIOException;
import org.apache.tomcat.websocket.WsSession;
@@ -41,6 +43,11 @@ import org.apache.tomcat.websocket.WsSes
*/
public class WsHttpUpgradeHandler implements HttpUpgradeHandler {
+ private static final Log log =
+ LogFactory.getLog(WsHttpUpgradeHandler.class);
+ private static final StringManager sm =
+ StringManager.getManager(Constants.PACKAGE_NAME);
+
private final ClassLoader applicationClassLoader;
private Endpoint ep;
@@ -50,12 +57,10 @@ public class WsHttpUpgradeHandler implem
private String subProtocol;
private Map<String,String> pathParameters;
private boolean secure;
+ WebConnection connection;
private WsSession wsSession;
- private static final StringManager sm =
- StringManager.getManager(Constants.PACKAGE_NAME);
-
public WsHttpUpgradeHandler() {
applicationClassLoader =
Thread.currentThread().getContextClassLoader();
@@ -83,6 +88,8 @@ public class WsHttpUpgradeHandler implem
sm.getString("wsHttpUpgradeHandler.noPreInit"));
}
+ this.connection = connection;
+
ServletInputStream sis;
ServletOutputStream sos;
try {
@@ -126,7 +133,11 @@ public class WsHttpUpgradeHandler implem
@Override
public void destroy() {
- // NO-OP
+ try {
+ connection.close();
+ } catch (Exception e) {
+ log.error(sm.getString("wsHttpUpgradeHandler.destroyFailed"), e);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]