You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2012/02/29 03:00:52 UTC

svn commit: r1294939 - /openejb/branches/openejb-3.1.x/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java

Author: dblevins
Date: Wed Feb 29 02:00:52 2012
New Revision: 1294939

URL: http://svn.apache.org/viewvc?rev=1294939&view=rev
Log:
OPENEJB-1786 Improve client logging

Modified:
    openejb/branches/openejb-3.1.x/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java

Modified: openejb/branches/openejb-3.1.x/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java?rev=1294939&r1=1294938&r2=1294939&view=diff
==============================================================================
--- openejb/branches/openejb-3.1.x/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java (original)
+++ openejb/branches/openejb-3.1.x/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java Wed Feb 29 02:00:52 2012
@@ -18,7 +18,6 @@ package org.apache.openejb.client;
 
 import static org.apache.openejb.client.Exceptions.newIOException;
 
-import javax.ejb.ConcurrentAccessTimeoutException;
 import java.io.EOFException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -39,18 +38,21 @@ import java.net.URI;
 
 public class Client {
     private static final Logger logger = Logger.getLogger("OpenEJB.client");
+    private static final boolean FINEST = logger.isLoggable(Level.FINEST);
+    private static final boolean FINER = logger.isLoggable(Level.FINER);
+    private static final boolean FINE = logger.isLoggable(Level.FINE);
 
     public static final ThreadLocal<Set<URI>> failed = new ThreadLocal<Set<URI>>();
 
     private static final ProtocolMetaData PROTOCOL_VERSION = new ProtocolMetaData("3.1");
 
-    private List<Class<? extends Throwable>> retryConditions = new CopyOnWriteArrayList();
+    private List<Class<? extends Throwable>> retryConditions = new CopyOnWriteArrayList<Class<? extends Throwable>>();
     private static Client client = new Client();
     private boolean retry = false;
 
     public Client() {
         String retryValue = System.getProperty("openejb.client.requestretry", getRetry() + "");
-        retry = new Boolean(retryValue);
+        retry = Boolean.valueOf(retryValue);
     }
 
     public static boolean addRetryCondition(Class<? extends Throwable> throwable) {
@@ -75,30 +77,34 @@ public class Client {
     }
 
     protected Response processRequest(Request req, Response res, ServerMetaData server) throws RemoteException {
-//        System.out.println("req = " + req);
-        if (server == null)
+        if (server == null){
             throw new IllegalArgumentException("Server instance cannot be null");
+        }
+
+        final long start = System.nanoTime();
 
-        ClusterMetaData cluster = getClusterMetaData(server);
+        final ClusterMetaData cluster = getClusterMetaData(server);
 
         /*----------------------------*/
         /* Get a connection to server */
         /*----------------------------*/
 
-        Connection conn = null;
+        final Connection conn;
         try {
             conn = ConnectionManager.getConnection(cluster, server, req);
         } catch (IOException e) {
-            throw new RemoteException("Unable to connect",e);
+            throw new RemoteException("Unable to connect", e);
         }
 
+        OutputStream out = null;
+        InputStream in = null;
+
         try {
 
 
             /*----------------------------------*/
             /* Get output streams */
             /*----------------------------------*/
-            OutputStream out;
             try {
 
                 out = conn.getOuputStream();
@@ -186,12 +192,11 @@ public class Client {
             /*----------------------------------*/
             /* Get input streams               */
             /*----------------------------------*/
-            InputStream in;
+
             try {
 
                 in = conn.getInputStream();
 
-
             } catch (IOException e) {
                 throw newIOException("Cannot open input stream to server: ", e);
             }
@@ -272,11 +277,23 @@ public class Client {
                     }
                 }
             }
+
+            if (FINEST) {
+                final long time = System.nanoTime() - start;
+                final String message = String.format("Invocation %sns - %s - Request(%s) - Response(%s)", time, conn.getURI(), req, res);
+                logger.log(Level.FINEST, message);
+            }
+
         } catch (RemoteException e) {
             throw e;
         } catch (IOException e){
-            Set<URI> failed = getFailed();
-            failed.add(conn.getURI());
+            final URI uri = conn.getURI();
+            final Set<URI> failed = getFailed();
+
+            if (FINER) {
+                logger.log(Level.FINER, "Add Failed " + uri.toString());
+            }
+            failed.add(uri);
             conn.discard();
             if (e instanceof RetryException || getRetry()){
                 try {
@@ -294,13 +311,31 @@ public class Client {
             throw new RemoteException("Error while communicating with server: ", error);
 
         } finally {
-            try {
-                if (conn != null) {
+
+            if(null != out){
+                try {
+                    out.close();
+                } catch (Throwable e) {
+                    //Ignore
+                }
+            }
+
+            if(null != in){
+                try {
+                    in.close();
+                } catch (Throwable e) {
+                    //Ignore
+                }
+            }
+
+            if (null != conn) {
+                try {
                     conn.close();
+                } catch (Throwable t) {
+                    logger.log(Level.WARNING, "Error closing connection with server: " + t.getMessage(), t);
                 }
-            } catch (Throwable t) {
-                logger.log(Level.WARNING, "Error closing connection with server: " + t.getMessage(), t);
             }
+
         }
         return res;
     }
@@ -317,6 +352,19 @@ public class Client {
     private static final Map<ServerMetaData, ClusterMetaData> clusters = new ConcurrentHashMap<ServerMetaData, ClusterMetaData>();
 
     private static void setClusterMetaData(ServerMetaData server, ClusterMetaData cluster) {
+
+        if (FINE) {
+            logger.log(Level.FINE, "Update ClusterMetaData(version=" + cluster.getVersion() + ", uris=" + cluster.getLocations().length);
+        }
+
+        if (FINER) {
+            int i = 0;
+            for (URI uri : cluster.getLocations()) {
+                final String format = String.format("ClusterMetaData(version=%s) - URI #%s %s", cluster.getVersion(), ++i, uri.toASCIIString());
+                logger.log(Level.FINER, format);
+            }
+        }
+
         clusters.put(server, cluster);
     }
 
@@ -331,6 +379,6 @@ public class Client {
     }
 
     private boolean getRetry() {
-        return retry = new Boolean(System.getProperty("openejb.client.requestretry", retry + ""));
+        return retry = Boolean.valueOf(System.getProperty("openejb.client.requestretry", retry + ""));
     }
 }