diff --git a/lib/java/src/org/apache/thrift/transport/TZlibTransport.java b/lib/java/src/org/apache/thrift/transport/TZlibTransport.java
index df4de13..e755aa5 100644
--- a/lib/java/src/org/apache/thrift/transport/TZlibTransport.java
+++ b/lib/java/src/org/apache/thrift/transport/TZlibTransport.java
@@ -74,11 +74,11 @@
 
     @Override
     public void close() {
+        super.close();
         if (transport_.isOpen()) {
             transport_.close();
         }
     }
-
 }
 
 class TTransportInputStream extends InputStream {
diff --git a/lib/java/test/org/apache/thrift/transport/TestTZlibTransport.java b/lib/java/test/org/apache/thrift/transport/TestTZlibTransport.java
index fe8dd51..3d7f9c1 100644
--- a/lib/java/test/org/apache/thrift/transport/TestTZlibTransport.java
+++ b/lib/java/test/org/apache/thrift/transport/TestTZlibTransport.java
@@ -18,14 +18,19 @@
  */
 package org.apache.thrift.transport;
 
-import junit.framework.TestCase;
-
-import java.io.*;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.zip.DataFormatException;
 import java.util.zip.DeflaterOutputStream;
 import java.util.zip.InflaterInputStream;
 
+import junit.framework.TestCase;
+
 public class TestTZlibTransport extends TestCase {
 
   protected TTransport getTransport(TTransport underlying) {
@@ -50,6 +55,21 @@
     trans.close();
   }
 
+  public void testCloseOpen() throws TTransportException {
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    TTransport trans = getTransport(new TIOStreamTransport(baos));
+    byte[] uncompressed = byteSequence(0, 245);
+    trans.write(uncompressed);
+    trans.close();
+    final byte[] compressed = baos.toByteArray();
+
+    final byte[] buf = new byte[255];
+    TTransport transRead = getTransport(new TIOStreamTransport(new ByteArrayInputStream(compressed)));
+    int readBytes = transRead.read(buf, 0, buf.length);
+    assertEquals(uncompressed.length, readBytes);
+    transRead.close();
+  }
+
   public void testRead() throws IOException, TTransportException {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(baos);
