Index: src/main/java/org/apache/hadoop/hbase/rest/provider/producer/PlainTextMessageBodyProducer.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/rest/provider/producer/PlainTextMessageBodyProducer.java (revision 983552) +++ src/main/java/org/apache/hadoop/hbase/rest/provider/producer/PlainTextMessageBodyProducer.java (working copy) @@ -24,8 +24,6 @@ import java.io.OutputStream; import java.lang.annotation.Annotation; import java.lang.reflect.Type; -import java.util.Map; -import java.util.WeakHashMap; import javax.ws.rs.Produces; import javax.ws.rs.WebApplicationException; @@ -47,7 +45,8 @@ public class PlainTextMessageBodyProducer implements MessageBodyWriter { - private Map buffer = new WeakHashMap(); + //private Map buffer = new WeakHashMap(); + private ThreadLocal buffer = new ThreadLocal(); @Override public boolean isWriteable(Class arg0, Type arg1, Annotation[] arg2, @@ -58,9 +57,9 @@ @Override public long getSize(Object object, Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { - byte[] bytes = object.toString().getBytes(); - buffer.put(object, bytes); - return bytes.length; + byte[] bytes = object.toString().getBytes(); + buffer.set(bytes); + return bytes.length; } @Override @@ -68,6 +67,8 @@ Annotation[] annotations, MediaType mediaType, MultivaluedMap httpHeaders, OutputStream outStream) throws IOException, WebApplicationException { - outStream.write(buffer.remove(object)); + byte[] bytes = buffer.get(); + outStream.write(bytes); + buffer.remove(); } } Index: src/main/java/org/apache/hadoop/hbase/rest/provider/producer/ProtobufMessageBodyProducer.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/rest/provider/producer/ProtobufMessageBodyProducer.java (revision 983552) +++ src/main/java/org/apache/hadoop/hbase/rest/provider/producer/ProtobufMessageBodyProducer.java (working copy) @@ -25,8 +25,6 @@ import java.io.OutputStream; import java.lang.annotation.Annotation; import java.lang.reflect.Type; -import java.util.Map; -import java.util.WeakHashMap; import javax.ws.rs.Produces; import javax.ws.rs.WebApplicationException; @@ -49,7 +47,8 @@ public class ProtobufMessageBodyProducer implements MessageBodyWriter { - private Map buffer = new WeakHashMap(); + //private Map buffer = new WeakHashMap(); + private ThreadLocal buffer = new ThreadLocal(); @Override public boolean isWriteable(Class type, Type genericType, @@ -67,7 +66,7 @@ return -1; } byte[] bytes = baos.toByteArray(); - buffer.put(m, bytes); + buffer.set(bytes); return bytes.length; } @@ -75,6 +74,8 @@ Annotation[] annotations, MediaType mediaType, MultivaluedMap httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException { - entityStream.write(buffer.remove(m)); + byte[] bytes = buffer.get(); + entityStream.write(bytes); + buffer.remove(); } }