You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2016/09/11 14:33:00 UTC

[2/2] tomee git commit: TOMEE-1917 option to skip counting stream wrappers (for ejbd)

TOMEE-1917 option to skip counting stream wrappers (for ejbd)


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

Branch: refs/heads/master
Commit: efd4aebffb151d6260c05793316037f608b3ffd8
Parents: 6ae306a
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Sun Sep 11 16:32:18 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Sun Sep 11 16:32:18 2016 +0200

----------------------------------------------------------------------
 .../apache/openejb/server/ejbd/EjbDaemon.java   | 15 +++++++-----
 .../openejb/server/ejbd/JndiRequestHandler.java | 25 ++++++++++----------
 .../openejb/server/httpd/OpenEJBHttpServer.java | 12 +++++++---
 .../openejb/server/context/RequestInfos.java    | 23 ++++++++++--------
 4 files changed, 44 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/efd4aebf/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 29a8018..c0a8e68 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
@@ -58,7 +58,7 @@ public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer {
     private ClientObjectFactory clientObjectFactory;
     //    DeploymentIndex deploymentIndex;
     private RequestHandler ejbHandler;
-    private RequestHandler jndiHandler;
+    private JndiRequestHandler jndiHandler;
     private RequestHandler authHandler;
     private RequestHandler logoutHandler;
     private ClusterRequestHandler clusterHandler;
@@ -69,6 +69,7 @@ public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer {
 
     //Four hours
     private int timeout = 14400000;
+    private boolean countStreams;
 
     public void init(final Properties props) throws Exception {
         containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
@@ -102,6 +103,8 @@ public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer {
         if (discovery != null) {
             discovery.setDiscoveryListener(clusterHandler);
         }
+
+        countStreams = Boolean.parseBoolean(props.getProperty("stream.count", Boolean.toString(jndiHandler.isDebug())));
     }
 
     public void service(final Socket socket) throws IOException {
@@ -177,10 +180,10 @@ public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer {
         try {
 
             final RequestInfos.RequestInfo info = RequestInfos.info();
-            info.setInputStream(new CountingInputStream(rawIn));
+            info.setInputStream(countStreams ? new CountingInputStream(rawIn) : rawIn);
 
             // Read client Protocol Version
-            final CountingInputStream cis = info.getInputStream();
+            final InputStream cis = info.getInputStream();
             clientProtocol.readExternal(cis);
             ois = new EjbObjectInputStream(cis);
 
@@ -209,7 +212,7 @@ public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer {
                     clusterHandler.getLogger().debug("Failed to write to ClusterResponse", failure);
 
                     try {
-                        info.setOutputStream(new CountingOutputStream(rawOut));
+                        info.setOutputStream(countStreams ? new CountingOutputStream(rawOut) : rawOut);
                         oos = new ObjectOutputStream(info.getOutputStream());
                         clusterResponse.setMetaData(clientProtocol);
                         clusterResponse.writeExternal(oos);
@@ -254,9 +257,9 @@ public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer {
             }
 
             try {
-                info.setOutputStream(new CountingOutputStream(rawOut));
+                info.setOutputStream(countStreams ? new CountingOutputStream(rawOut) : rawOut);
 
-                final CountingOutputStream cos = info.getOutputStream();
+                final OutputStream cos = info.getOutputStream();
 
                 //Let client know we are using the requested protocol to respond
                 clientProtocol.writeExternal(cos);

http://git-wip-us.apache.org/repos/asf/tomee/blob/efd4aebf/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
----------------------------------------------------------------------
diff --git a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
index fd6425e..01d6297 100644
--- a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
+++ b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
@@ -65,8 +65,10 @@ import javax.sql.DataSource;
 import javax.validation.Validator;
 import javax.validation.ValidatorFactory;
 import javax.xml.namespace.QName;
+import java.io.InputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.io.OutputStream;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
@@ -83,11 +85,7 @@ class JndiRequestHandler extends RequestHandler {
 
     private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_SERVER_REMOTE.createChild("jndi"), "org.apache.openejb.server.util.resources");
 
-    private final Context ejbJndiTree;
     private Context clientJndiTree;
-    private final Context deploymentsJndiTree;
-
-    private Context globalJndiTree;
 
     private final ClusterableRequestHandler clusterableRequestHandler;
     private Context rootContext;
@@ -95,10 +93,9 @@ class JndiRequestHandler extends RequestHandler {
     JndiRequestHandler(final EjbDaemon daemon) throws Exception {
         super(daemon);
         final ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
-        ejbJndiTree = (Context) containerSystem.getJNDIContext().lookup("openejb/remote");
-        deploymentsJndiTree = (Context) containerSystem.getJNDIContext().lookup("openejb/Deployment");
-
-        globalJndiTree = (Context) containerSystem.getJNDIContext().lookup("openejb/global");
+        containerSystem.getJNDIContext().lookup("openejb/remote");
+        containerSystem.getJNDIContext().lookup("openejb/Deployment");
+        containerSystem.getJNDIContext().lookup("openejb/global");
 
         rootContext = containerSystem.getJNDIContext();
         try {
@@ -108,6 +105,10 @@ class JndiRequestHandler extends RequestHandler {
         clusterableRequestHandler = newClusterableRequestHandler();
     }
 
+    public boolean isDebug() {
+        return logger.isDebugEnabled();
+    }
+
     protected BasicClusterableRequestHandler newClusterableRequestHandler() {
         return new BasicClusterableRequestHandler();
     }
@@ -210,12 +211,12 @@ class JndiRequestHandler extends RequestHandler {
 
     private void logRequestResponse(final JNDIRequest req, final JNDIResponse res) {
         final RequestInfos.RequestInfo info = RequestInfos.info();
-        final CountingInputStream cis = info.getInputStream();
-        final CountingOutputStream cos = info.getOutputStream();
+        final InputStream cis = info.getInputStream();
+        final OutputStream cos = info.getOutputStream();
 
-        logger.debug("JNDI REQUEST: " + req + " (size = " + (null != cis ? cis.getCount() : 0)
+        logger.debug("JNDI REQUEST: " + req + " (size = " + (null != cis ? CountingInputStream.class.cast(cis).getCount() : 0)
             + "b, remote-ip =" + info.ip
-            + ") -- RESPONSE: " + res + " (size = " + (null != cos ? cos.getCount() : 0) + "b)");
+            + ") -- RESPONSE: " + res + " (size = " + (null != cos ? CountingOutputStream.class.cast(cos).getCount() : 0) + "b)");
     }
 
     private String getPrefix(final JNDIRequest req) throws NamingException {

http://git-wip-us.apache.org/repos/asf/tomee/blob/efd4aebf/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java
index 2fa3d6d..6aa282d 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java
@@ -62,6 +62,7 @@ public class OpenEJBHttpServer implements HttpServer {
     private HttpListener listener;
     private Set<Output> print;
     private boolean indent;
+    private boolean countStreams;
 
     public OpenEJBHttpServer() {
         this(null);
@@ -118,8 +119,13 @@ public class OpenEJBHttpServer implements HttpServer {
         try {
             RequestInfos.initRequestInfo(socket);
 
-            in = new CountingInputStream(socket.getInputStream());
-            out = new CountingOutputStream(socket.getOutputStream());
+            if (countStreams) {
+                in = new CountingInputStream(socket.getInputStream());
+                out = new CountingOutputStream(socket.getOutputStream());
+            } else {
+                in = socket.getInputStream();
+                out = socket.getOutputStream();
+            }
 
             //TODO: if ssl change to https
             final URI socketURI = new URI("http://" + socket.getLocalAddress().getHostAddress() + ":" + socket.getLocalPort());
@@ -172,7 +178,7 @@ public class OpenEJBHttpServer implements HttpServer {
         indent = print.size() > 0 && options.get("" +
             "" +
             ".xml", false);
-
+        countStreams = options.get("stream.count", false);
     }
 
     public static enum Output {

http://git-wip-us.apache.org/repos/asf/tomee/blob/efd4aebf/server/openejb-server/src/main/java/org/apache/openejb/server/context/RequestInfos.java
----------------------------------------------------------------------
diff --git a/server/openejb-server/src/main/java/org/apache/openejb/server/context/RequestInfos.java b/server/openejb-server/src/main/java/org/apache/openejb/server/context/RequestInfos.java
index d5db407..ad6455d 100644
--- a/server/openejb-server/src/main/java/org/apache/openejb/server/context/RequestInfos.java
+++ b/server/openejb-server/src/main/java/org/apache/openejb/server/context/RequestInfos.java
@@ -20,6 +20,8 @@ import org.apache.openejb.server.stream.CountingInputStream;
 import org.apache.openejb.server.stream.CountingOutputStream;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.Socket;
@@ -27,7 +29,7 @@ import java.net.SocketAddress;
 
 public final class RequestInfos {
 
-    private static final ThreadLocal<RequestInfo> REQUEST_INFO = new ThreadLocal<RequestInfo>();
+    private static final ThreadLocal<RequestInfo> REQUEST_INFO = new ThreadLocal<>();
 
     private RequestInfos() {
         // no-op
@@ -73,11 +75,10 @@ public final class RequestInfos {
     public static class RequestInfo {
 
         public String ip;
-        private CountingInputStream inputStream;
-        private CountingOutputStream outputStream;
-
-        public CountingInputStream getInputStream() {
+        private InputStream inputStream;
+        private OutputStream outputStream;
 
+        public InputStream getInputStream() {
             if (null == inputStream) {
                 throw new RuntimeException("InputStream has not been set");
             }
@@ -85,7 +86,7 @@ public final class RequestInfos {
             return inputStream;
         }
 
-        public CountingOutputStream getOutputStream() {
+        public OutputStream getOutputStream() {
 
             if (null == outputStream) {
                 throw new RuntimeException("OutputStream has not been set");
@@ -94,11 +95,11 @@ public final class RequestInfos {
             return outputStream;
         }
 
-        public void setInputStream(final CountingInputStream inputStream) {
+        public void setInputStream(final InputStream inputStream) {
             this.inputStream = inputStream;
         }
 
-        public void setOutputStream(final CountingOutputStream outputStream) {
+        public void setOutputStream(final OutputStream outputStream) {
             this.outputStream = outputStream;
         }
 
@@ -106,8 +107,10 @@ public final class RequestInfos {
         public String toString() {
             return "RequestInfo{"
                 + "ip='" + ip + '\''
-                + ", request-size=" + (inputStream != null ? inputStream.getCount() : "unknown")
-                + ", response-size=" + (outputStream != null ? outputStream.getCount() : "unknown")
+                + ", request-size=" + (inputStream != null && CountingInputStream.class.isInstance(inputStream) ?
+                    CountingInputStream.class.cast(inputStream).getCount() : "unknown")
+                + ", response-size=" + (outputStream != null && CountingOutputStream.class.isInstance(outputStream) ?
+                    CountingOutputStream.class.cast(outputStream).getCount() : "unknown")
                 + '}';
         }
     }