Experimental patch to all you to optionally buffer the incoming payload

Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ea8347ac
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ea8347ac
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ea8347ac

Branch: refs/heads/tomee-1.7.x
Commit: ea8347ac0cb050a569485c16655e3acc71525efc
Parents: c702597
Author: Jonathan Gallimore <j...@jrg.me.uk>
Authored: Fri Sep 16 10:12:49 2016 +0100
Committer: Jonathan Gallimore <j...@jrg.me.uk>
Committed: Fri Sep 16 10:12:49 2016 +0100

----------------------------------------------------------------------
 .../org/apache/openejb/server/ejbd/EjbDaemon.java    | 15 +++++++++++++++
 .../java/org/apache/tomee/catalina/TomcatLoader.java |  2 +-
 2 files changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/ea8347ac/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
----------------------------------------------------------------------
diff --git 
a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
 
b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
index 24f871f..c94ab3a 100644
--- 
a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
+++ 
b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
@@ -28,6 +28,7 @@ import org.apache.openejb.client.RequestType;
 import org.apache.openejb.client.Response;
 import org.apache.openejb.client.ServerMetaData;
 import org.apache.openejb.client.serializer.EJBDSerializer;
+import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.server.DiscoveryAgent;
 import org.apache.openejb.server.context.RequestInfos;
@@ -40,6 +41,8 @@ import org.apache.openejb.util.Logger;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.ObjectInputStream;
@@ -65,6 +68,7 @@ public class EjbDaemon implements 
org.apache.openejb.spi.ApplicationServer {
     private ContainerSystem containerSystem;
     private boolean gzip;
     private boolean debugPayload;
+    private boolean bufferStream;
     private EJBDSerializer serializer = null;
 
     //Four hours
@@ -82,6 +86,7 @@ public class EjbDaemon implements 
org.apache.openejb.spi.ApplicationServer {
         clusterHandler = new ClusterRequestHandler(this);
         gzip = "true".equalsIgnoreCase(props.getProperty("gzip", "false"));
         debugPayload = 
"true".equalsIgnoreCase(props.getProperty("debugPayload", "true"));
+        bufferStream = 
"true".equalsIgnoreCase(props.getProperty("bufferStream", "false"));
 
         try {
             this.timeout = Integer.parseInt(props.getProperty("timeout", 
"14400000"));
@@ -181,6 +186,16 @@ public class EjbDaemon implements 
org.apache.openejb.spi.ApplicationServer {
             final RequestInfos.RequestInfo info = RequestInfos.info();
             info.setInputStream(debugPayload ? new CountingInputStream(rawIn) 
: rawIn);
 
+            if (bufferStream) {
+
+                // get entire buffer
+                final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                final InputStream is = info.getInputStream();
+                IO.copy(is, baos);
+                is.close();
+                info.setInputStream(new 
ByteArrayInputStream(baos.toByteArray()));
+            }
+
             // Read client Protocol Version
             final InputStream cis = info.getInputStream();
             clientProtocol.readExternal(cis);

http://git-wip-us.apache.org/repos/asf/tomee/blob/ea8347ac/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
----------------------------------------------------------------------
diff --git 
a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
 
b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
index 84b1b18..80ab465 100644
--- 
a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
+++ 
b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
@@ -258,7 +258,7 @@ public class TomcatLoader implements Loader {
 
         final Properties ejbServerProps = new Properties();
         ejbServerProps.putAll(properties);
-        for (final String prop : new String[] { "serializer", "gzip", 
"debugPayload" }) { // ensure -Dejbd.xxx are read
+        for (final String prop : new String[] { "serializer", "gzip", 
"debugPayload", "bufferStream" }) { // ensure -Dejbd.xxx are read
             final String value = SystemInstance.get().getProperty("ejbd." + 
prop);
             if (value != null) {
                 ejbServerProps.put(prop, value);

Reply via email to