Author: andygumbrecht
Date: Tue Aug 13 12:50:36 2013
New Revision: 1513464

URL: http://svn.apache.org/r1513464
Log:
Fix more backwards compatibility issues by allowing client to define the 
protocol.
Ensure all Externalizables/Serializables have a serialVersionUID.

Modified:
    tomee/tomee/trunk/server/openejb-client/   (props changed)
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/AuthenticationRequest.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/AuthenticationResponse.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClientMetaData.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterMetaData.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterRequest.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterResponse.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandle.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandle.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIRequest.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIResponse.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/NameClassPairEnumeration.java
    
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java
    tomee/tomee/trunk/server/openejb-ejbd/   (props changed)
    
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ClientObjectFactory.java
    
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
    
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java

Propchange: tomee/tomee/trunk/server/openejb-client/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue Aug 13 12:50:36 2013
@@ -3,6 +3,7 @@
 *.iws
 *~
 .classpath
+.idea
 .project
 .settings
 target

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/AuthenticationRequest.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/AuthenticationRequest.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/AuthenticationRequest.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/AuthenticationRequest.java
 Tue Aug 13 12:50:36 2013
@@ -22,6 +22,7 @@ import java.io.ObjectOutput;
 
 public class AuthenticationRequest implements Request {
 
+    private static final long serialVersionUID = 7009531340198948330L;
     private transient String realm;
     private transient String username;
     private transient String credentials;

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/AuthenticationResponse.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/AuthenticationResponse.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/AuthenticationResponse.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/AuthenticationResponse.java
 Tue Aug 13 12:50:36 2013
@@ -22,6 +22,7 @@ import java.io.ObjectOutput;
 
 public class AuthenticationResponse implements Response {
 
+    private static final long serialVersionUID = 7293643855614467349L;
     private transient int responseCode = -1;
     private transient ClientMetaData identity;
     private transient ServerMetaData server;

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
 Tue Aug 13 12:50:36 2013
@@ -145,14 +145,17 @@ public class Client {
     }
 
     protected Response processRequest(final Request req, final Response res, 
final ServerMetaData server) throws RemoteException {
+
         if (server == null) {
             throw new IllegalArgumentException("Server instance cannot be 
null");
         }
 
         final long start = System.nanoTime();
-
         final ClusterMetaData cluster = getClusterMetaData(server);
 
+        //Determine which protocol to use for request writes
+        final ProtocolMetaData protocolRequest = (null != COMPATIBLE_META_DATA 
? COMPATIBLE_META_DATA : PROTOCOL_META_DATA);
+
         /*----------------------------*/
         /* Get a connection to server */
         /*----------------------------*/
@@ -185,7 +188,7 @@ public class Client {
             /* Write the protocol magic         */
             /*----------------------------------*/
             try {
-                PROTOCOL_META_DATA.writeExternal(out);
+                protocolRequest.writeExternal(out);
                 out.flush();
             } catch (IOException e) {
                 throw newIOException("Cannot write the protocol metadata to 
the server: ", e);
@@ -205,6 +208,7 @@ public class Client {
             /* Write ServerMetaData */
             /*----------------------------------*/
             try {
+                server.setMetaData(protocolRequest);
                 server.writeExternal(objectOut);
             } catch (IOException e) {
                 throw newIOException("Cannot write the ServerMetaData to the 
server: ", e);
@@ -216,6 +220,7 @@ public class Client {
             try {
 
                 final ClusterRequest clusterRequest = new 
ClusterRequest(cluster);
+                clusterRequest.setMetaData(protocolRequest);
                 objectOut.write(clusterRequest.getRequestType().getCode());
                 clusterRequest.writeExternal(objectOut);
             } catch (Throwable e) {
@@ -236,7 +241,7 @@ public class Client {
             /*----------------------------------*/
             try {
 
-                req.setMetaData(COMPATIBLE_META_DATA);
+                req.setMetaData(protocolRequest);
                 req.writeExternal(objectOut);
                 objectOut.flush();
                 out.flush();
@@ -262,19 +267,20 @@ public class Client {
                 throw newIOException("Cannot open input stream to server: ", 
e);
             }
 
-            ProtocolMetaData protocolMetaData = null;
+            //Determine the server response protocol for reading
+            ProtocolMetaData protocolResponse = null;
             try {
 
-                protocolMetaData = new ProtocolMetaData();
-                protocolMetaData.readExternal(in);
+                protocolResponse = new ProtocolMetaData();
+                protocolResponse.readExternal(in);
 
             } catch (EOFException e) {
 
-                throw newIOException("Prematurely reached the end of the 
stream.  " + protocolMetaData.getSpec() + " : " + e.getMessage(), e);
+                throw newIOException("Prematurely reached the end of the 
stream.  " + protocolResponse.getSpec() + " : " + e.getMessage(), e);
 
             } catch (IOException e) {
 
-                throw newIOException("Cannot determine server protocol 
version: Received " + protocolMetaData.getSpec() + " : " + e.getMessage(), e);
+                throw newIOException("Cannot determine server protocol 
version: Received " + protocolResponse.getSpec() + " : " + e.getMessage(), e);
             }
 
             final ObjectInput objectIn;
@@ -283,7 +289,7 @@ public class Client {
                 objectIn = new EjbObjectInputStream(in);
 
             } catch (IOException e) {
-                throw newIOException("Cannot open object input stream to 
server (" + protocolMetaData.getSpec() + ") : " + e.getMessage(), e);
+                throw newIOException("Cannot open object input stream to 
server (" + protocolResponse.getSpec() + ") : " + e.getMessage(), e);
             }
 
             /*----------------------------------*/
@@ -291,7 +297,7 @@ public class Client {
             /*----------------------------------*/
             try {
                 final ClusterResponse clusterResponse = new ClusterResponse();
-                clusterResponse.setMetaData(protocolMetaData);
+                clusterResponse.setMetaData(protocolResponse);
                 clusterResponse.readExternal(objectIn);
                 switch (clusterResponse.getResponseCode()) {
                     case UPDATE: {
@@ -306,26 +312,26 @@ public class Client {
                 throw new RemoteException("Cannot read the cluster response 
from the server.  The class for an object being returned is not located in this 
system:", e);
 
             } catch (IOException e) {
-                throw newIOException("Cannot read the cluster response from 
the server (" + protocolMetaData.getSpec() + ") : " + e.getMessage(), e);
+                throw newIOException("Cannot read the cluster response from 
the server (" + protocolResponse.getSpec() + ") : " + e.getMessage(), e);
 
             } catch (Throwable e) {
-                throw new RemoteException("Error reading cluster response from 
server (" + protocolMetaData.getSpec() + ") : " + e.getMessage(), e);
+                throw new RemoteException("Error reading cluster response from 
server (" + protocolResponse.getSpec() + ") : " + e.getMessage(), e);
             }
 
             /*----------------------------------*/
             /* Read response */
             /*----------------------------------*/
             try {
-                res.setMetaData(protocolMetaData);
+                res.setMetaData(protocolResponse);
                 res.readExternal(objectIn);
             } catch (ClassNotFoundException e) {
                 throw new RemoteException("Cannot read the response from the 
server.  The class for an object being returned is not located in this 
system:", e);
 
             } catch (IOException e) {
-                throw newIOException("Cannot read the response from the server 
(" + protocolMetaData.getSpec() + ") : " + e.getMessage(), e);
+                throw newIOException("Cannot read the response from the server 
(" + protocolResponse.getSpec() + ") : " + e.getMessage(), e);
 
             } catch (Throwable e) {
-                throw new RemoteException("Error reading response from server 
(" + protocolMetaData.getSpec() + ") : " + e.getMessage(), e);
+                throw new RemoteException("Error reading response from server 
(" + protocolResponse.getSpec() + ") : " + e.getMessage(), e);
             }
 
             if (retryConditions.size() > 0) {

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClientMetaData.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClientMetaData.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClientMetaData.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClientMetaData.java
 Tue Aug 13 12:50:36 2013
@@ -25,6 +25,7 @@ import java.io.ObjectOutput;
 
 public class ClientMetaData implements Externalizable {
 
+    private static final long serialVersionUID = 8963006076572980814L;
     transient Object clientIdentity;
     private transient EJBDSerializer serializer;
     private transient ProtocolMetaData metaData;

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterMetaData.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterMetaData.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterMetaData.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterMetaData.java
 Tue Aug 13 12:50:36 2013
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.net.URI;
-import java.net.URISyntaxException;
 
 /**
  * @version $Rev$ $Date$
@@ -89,8 +88,8 @@ public class ClusterMetaData implements 
         for (int i = 0; i < locations.length; i++) {
             final Object o = in.readObject();
             try {
-                locations[i] = new URI((String) o);
-            } catch (URISyntaxException e) {
+                locations[i] = URI.create((String) o);
+            } catch (IllegalArgumentException e) {
                 throw (IOException) new IOException().initCause(e);
             }
         }

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterRequest.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterRequest.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterRequest.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterRequest.java
 Tue Aug 13 12:50:36 2013
@@ -25,6 +25,7 @@ import java.io.ObjectOutput;
  */
 public class ClusterRequest implements Request {
 
+    private static final long serialVersionUID = 2188352573904048149L;
     private transient long clusterMetaDataVersion;
     private transient ProtocolMetaData metaData;
 

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterResponse.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterResponse.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterResponse.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ClusterResponse.java
 Tue Aug 13 12:50:36 2013
@@ -25,6 +25,8 @@ import java.io.ObjectOutput;
  */
 public class ClusterResponse implements Response {
 
+    private static final long serialVersionUID = 5399831296584206574L;
+
     public static enum Code {
         CURRENT,
         UPDATE,

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandle.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandle.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandle.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandle.java
 Tue Aug 13 12:50:36 2013
@@ -24,6 +24,7 @@ import java.rmi.RemoteException;
 
 public class EJBHomeHandle implements java.io.Externalizable, 
javax.ejb.HomeHandle {
 
+    private static final long serialVersionUID = -5221661986423761808L;
     protected transient EJBHomeProxy ejbHomeProxy;
     protected transient EJBHomeHandler handler;
     private transient ProtocolMetaData metaData;

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandle.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandle.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandle.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandle.java
 Tue Aug 13 12:50:36 2013
@@ -24,6 +24,7 @@ import java.rmi.RemoteException;
 
 public class EJBObjectHandle implements java.io.Externalizable, 
javax.ejb.Handle {
 
+    private static final long serialVersionUID = -4428541526493118024L;
     protected transient EJBObjectProxy ejbObjectProxy;
     protected transient EJBObjectHandler handler;
     private transient ProtocolMetaData metaData;

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java
 Tue Aug 13 12:50:36 2013
@@ -34,6 +34,7 @@ import java.util.Arrays;
 
 public class EJBRequest implements ClusterableRequest {
 
+    private static final long serialVersionUID = -2075915633178128028L;
     private transient RequestMethodCode requestMethod;
     private transient int deploymentCode = 0;
     private transient Object clientIdentity;
@@ -300,6 +301,7 @@ public class EJBRequest implements Clust
         out.writeShort(deploymentCode);
         out.writeObject(clientIdentity);
         out.writeInt(serverHash);
+        out.flush();
 
         body.setMetaData(metaData);
         body.writeExternal(out);
@@ -307,6 +309,7 @@ public class EJBRequest implements Clust
 
     public static class Body implements java.io.Externalizable {
 
+        private static final long serialVersionUID = -5364100745236348268L;
         private transient volatile String toString = null;
         private transient EJBMetaDataImpl ejb;
         private transient ORB orb;
@@ -493,6 +496,8 @@ public class EJBRequest implements Clust
             if (null == metaData || metaData.isAtLeast(4, 6)) {
                 out.writeObject(authentication);
             }
+
+            out.flush();
         }
 
         /**

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
 Tue Aug 13 12:50:36 2013
@@ -28,6 +28,7 @@ public class EJBResponse implements Clus
      * 2. Append times.
      */
     public static final byte VERSION = 2;
+    private static final long serialVersionUID = 611943612548626399L;
 
     private transient byte version = VERSION;
     private transient int responseCode = -1;

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIRequest.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIRequest.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIRequest.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIRequest.java
 Tue Aug 13 12:50:36 2013
@@ -22,6 +22,7 @@ import java.io.ObjectOutput;
 
 public class JNDIRequest implements ClusterableRequest {
 
+    private static final long serialVersionUID = -568798775203142850L;
     private transient RequestMethodCode requestMethod;
     private transient String requestString;
     private transient String moduleId;

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIResponse.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIResponse.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIResponse.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIResponse.java
 Tue Aug 13 12:50:36 2013
@@ -23,6 +23,7 @@ import java.io.ObjectOutput;
 
 public class JNDIResponse implements ClusterableResponse {
 
+    private static final long serialVersionUID = 6741338056648918607L;
     private transient int responseCode = -1;
     private transient Object result;
     private transient ServerMetaData server;

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/NameClassPairEnumeration.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/NameClassPairEnumeration.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/NameClassPairEnumeration.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/NameClassPairEnumeration.java
 Tue Aug 13 12:50:36 2013
@@ -32,6 +32,7 @@ import java.util.List;
  */
 public class NameClassPairEnumeration<T extends NameClassPair> implements 
NamingEnumeration<T>, Externalizable {
 
+    private static final long serialVersionUID = 5678570940990836625L;
     private transient List<NameClassPair> list;
     private transient Iterator<NameClassPair> iterator;
     private transient ProtocolMetaData metaData;

Modified: 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java
 Tue Aug 13 12:50:36 2013
@@ -47,6 +47,7 @@ public class SocketConnectionFactory imp
     private KeepAliveStyle keepAliveStyle = KeepAliveStyle.PING;
 
     public static final String PROPERTY_SOCKET_TIMEOUT = 
"openejb.client.connection.socket.timeout";
+    public static final String PROPERTY_SOCKET_READ = 
"openejb.client.connection.socket.read";
     public static final String PROPERTY_POOL_TIMEOUT = 
"openejb.client.connection.pool.timeout";
     private static final String PROPERTY_POOL_TIMEOUT2 = 
"openejb.client.connectionpool.timeout";
     public static final String PROPERTY_POOL_SIZE = 
"openejb.client.connection.pool.size";
@@ -57,7 +58,8 @@ public class SocketConnectionFactory imp
     private static final Map<URI, Pool> connections = new 
ConcurrentHashMap<URI, Pool>();
     private int size = 5;
     private long timeoutPool = 1000;
-    private int timeoutSocket = 500;
+    private int timeoutConnect = 1000;
+    private int timeoutRead = 14400000;
     private int timeoutLinger;
     private String[] enabledCipherSuites;
 
@@ -65,9 +67,11 @@ public class SocketConnectionFactory imp
 
         this.size = this.getSize();
         this.timeoutPool = this.getTimeoutPool();
-        this.timeoutSocket = this.getTimeoutSocket();
+        this.timeoutConnect = this.getTimeoutSocket();
         this.timeoutLinger = this.getTimeoutLinger();
+        this.timeoutRead = this.getTimeoutRead();
         this.enabledCipherSuites = this.getEnabledCipherSuites();
+
         try {
             String property = System.getProperty(PROPERTY_KEEPALIVE);
             if (property != null) {
@@ -106,7 +110,12 @@ public class SocketConnectionFactory imp
 
     private int getTimeoutSocket() {
         final Properties p = System.getProperties();
-        return getInt(p, SocketConnectionFactory.PROPERTY_SOCKET_TIMEOUT, 
this.timeoutSocket);
+        return getInt(p, SocketConnectionFactory.PROPERTY_SOCKET_TIMEOUT, 
this.timeoutConnect);
+    }
+
+    private int getTimeoutRead() {
+        final Properties p = System.getProperties();
+        return getInt(p, SocketConnectionFactory.PROPERTY_SOCKET_READ, 
this.timeoutRead);
     }
 
     private int getSize() {
@@ -288,7 +297,10 @@ public class SocketConnectionFactory imp
 
                 this.socket.setTcpNoDelay(true);
                 this.socket.setSoLinger(true, 
SocketConnectionFactory.this.timeoutLinger);
-                this.socket.connect(address, 
SocketConnectionFactory.this.timeoutSocket);
+                this.socket.connect(address, 
SocketConnectionFactory.this.timeoutConnect);
+
+                //Four hours default
+                
this.socket.setSoTimeout(SocketConnectionFactory.this.timeoutRead);
 
                 Client.fireEvent(new ConnectionOpened(uri));
 

Propchange: tomee/tomee/trunk/server/openejb-ejbd/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue Aug 13 12:50:36 2013
@@ -3,6 +3,7 @@
 *.iws
 *~
 .classpath
+.idea
 .project
 .settings
 target

Modified: 
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ClientObjectFactory.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ClientObjectFactory.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ClientObjectFactory.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ClientObjectFactory.java
 Tue Aug 13 12:50:36 2013
@@ -39,11 +39,12 @@ class ClientObjectFactory implements org
 
     public ClientObjectFactory(final EjbDaemon daemon, final Properties props) 
{
 
+        String uriString = "foo://127.0.0.1:4201";
         try {
-            final String uriString = props.getProperty("openejb.ejbd.uri", 
"foo://127.0.0.1:4201");
+            uriString = (props.getProperty("openejb.ejbd.uri", uriString));
             this.defaultServerMetaData = new ServerMetaData(new 
URI(uriString));
         } catch (Exception e) {
-            e.printStackTrace();
+            EjbDaemon.logger.error("Failed to read 'openejb.ejbd.uri': " + 
uriString, e);
         }
     }
 

Modified: 
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
 Tue Aug 13 12:50:36 2013
@@ -53,9 +53,6 @@ import java.util.zip.GZIPInputStream;
 
 public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer {
 
-    //This is used to tell the clients which protocol we understand
-    private static final ProtocolMetaData PROTOCOL_VERSION = new 
ProtocolMetaData(); // aligned with 
org.apache.openejb.client.EJBRequest.readExternal(java.io.ObjectInput)() and 
org.apache.openejb.client.Client.PROTOCOL_VERSION
-
     static final Logger logger = 
Logger.getInstance(LogCategory.OPENEJB_SERVER_REMOTE, 
"org.apache.openejb.server.util.resources");
 
     private ClientObjectFactory clientObjectFactory;
@@ -69,6 +66,9 @@ public class EjbDaemon implements org.ap
     private boolean gzip;
     private EJBDSerializer serializer = null;
 
+    //Four hours
+    private int timeout = 14400000;
+
     public void init(final Properties props) throws Exception {
         containerSystem = 
SystemInstance.get().getComponent(ContainerSystem.class);
         //        deploymentIndex = new 
DeploymentIndex(containerSystem.deployments());
@@ -81,6 +81,12 @@ public class EjbDaemon implements org.ap
         clusterHandler = new ClusterRequestHandler(this);
         gzip = "true".equalsIgnoreCase(props.getProperty("gzip", "false"));
 
+        try {
+            this.timeout = Integer.parseInt(props.getProperty("timeout", 
"14400000"));
+        } catch (Exception e) {
+            //Ignore
+        }
+
         final String serializer = props.getProperty("serializer", null);
         if (serializer != null) {
             try {
@@ -109,11 +115,14 @@ public class EjbDaemon implements org.ap
                 return;
             }
 
-            in = new BufferedInputStream(socket.getInputStream());
-            out = new BufferedOutputStream(socket.getOutputStream());
+            socket.setSoTimeout(this.timeout);
+
             if (gzip) {
                 in = new GZIPInputStream(new 
BufferedInputStream(socket.getInputStream()));
                 out = new BufferedOutputStream(new 
FlushableGZIPOutputStream(socket.getOutputStream()));
+            } else {
+                in = new BufferedInputStream(socket.getInputStream());
+                out = new BufferedOutputStream(socket.getOutputStream());
             }
 
             RequestInfos.initRequestInfo(socket);
@@ -157,7 +166,8 @@ public class EjbDaemon implements org.ap
     }
 
     public void service(final InputStream rawIn, final OutputStream rawOut) 
throws IOException {
-        final ProtocolMetaData clientMetaData = new ProtocolMetaData();
+
+        final ProtocolMetaData clientProtocol = new ProtocolMetaData();
 
         ObjectInputStream ois = null;
         ObjectOutputStream oos = null;
@@ -171,7 +181,7 @@ public class EjbDaemon implements org.ap
 
             // Read client Protocol Version
             final CountingInputStream cis = info.getInputStream();
-            clientMetaData.readExternal(cis);
+            clientProtocol.readExternal(cis);
             ois = new EjbObjectInputStream(cis);
 
             // Read ServerMetaData
@@ -190,7 +200,7 @@ public class EjbDaemon implements org.ap
             ClusterResponse clusterResponse = null;
 
             if (requestType == RequestType.CLUSTER_REQUEST) {
-                clusterResponse = clusterHandler.processRequest(ois, 
clientMetaData);
+                clusterResponse = clusterHandler.processRequest(ois, 
clientProtocol);
 
                 //Check for immediate failure
                 final Throwable failure = clusterResponse.getFailure();
@@ -201,7 +211,7 @@ public class EjbDaemon implements org.ap
                     try {
                         info.setOutputStream(new CountingOutputStream(rawOut));
                         oos = new ObjectOutputStream(info.getOutputStream());
-                        clusterResponse.setMetaData(clientMetaData);
+                        clusterResponse.setMetaData(clientProtocol);
                         clusterResponse.writeExternal(oos);
                         oos.flush();
                     } catch (IOException ie) {
@@ -227,16 +237,16 @@ public class EjbDaemon implements org.ap
             final Response response;
             switch (requestType) {
                 case EJB_REQUEST:
-                    response = processEjbRequest(ois, clientMetaData);
+                    response = processEjbRequest(ois, clientProtocol);
                     break;
                 case JNDI_REQUEST:
-                    response = processJndiRequest(ois, clientMetaData);
+                    response = processJndiRequest(ois, clientProtocol);
                     break;
                 case AUTH_REQUEST:
-                    response = processAuthRequest(ois, clientMetaData);
+                    response = processAuthRequest(ois, clientProtocol);
                     break;
                 default:
-                    logger.error("\"" + requestType + " " + 
clientMetaData.getSpec() + "\" FAIL \"Unknown request type " + requestType);
+                    logger.error("\"" + requestType + " " + 
clientProtocol.getSpec() + "\" FAIL \"Unknown request type " + requestType);
                     return;
             }
 
@@ -244,46 +254,48 @@ public class EjbDaemon implements org.ap
                 info.setOutputStream(new CountingOutputStream(rawOut));
 
                 final CountingOutputStream cos = info.getOutputStream();
-                PROTOCOL_VERSION.writeExternal(cos);
+
+                //Let client know we are using the requested protocol to 
respond
+                clientProtocol.writeExternal(cos);
                 cos.flush();
 
                 oos = new ObjectOutputStream(cos);
-                clusterHandler.processResponse(clusterResponse, oos, 
clientMetaData);
+                clusterHandler.processResponse(clusterResponse, oos, 
clientProtocol);
                 oos.flush();
 
             } finally {
                 switch (requestType) {
                     case EJB_REQUEST:
-                        processEjbResponse(response, oos, clientMetaData);
+                        processEjbResponse(response, oos, clientProtocol);
                         break;
                     case JNDI_REQUEST:
-                        processJndiResponse(response, oos, clientMetaData);
+                        processJndiResponse(response, oos, clientProtocol);
                         break;
                     case AUTH_REQUEST:
-                        processAuthResponse(response, oos, clientMetaData);
+                        processAuthResponse(response, oos, clientProtocol);
                         break;
                     default:
                         //Should never get here...
-                        logger.error("\"" + requestType + " " + 
clientMetaData.getSpec() + "\" FAIL \"Unknown response type " + requestType);
+                        logger.error("\"" + requestType + " " + 
clientProtocol.getSpec() + "\" FAIL \"Unknown response type " + requestType);
                 }
             }
 
         } catch (IllegalArgumentException iae) {
-            final String msg = "\"" + clientMetaData.getSpec() + "\" FAIL 
\"Unknown request type " + requestTypeByte;
+            final String msg = "\"" + clientProtocol.getSpec() + "\" FAIL 
\"Unknown request type " + requestTypeByte;
             if (logger.isDebugEnabled()) {
                 logger.debug(msg, iae);
             } else {
                 logger.warning(msg + " - Debug for StackTrace");
             }
         } catch (SecurityException e) {
-            final String msg = "\"" + requestType + " " + 
clientMetaData.getSpec() + "\" FAIL \"Security error - " + e.getMessage() + 
"\"";
+            final String msg = "\"" + requestType + " " + 
clientProtocol.getSpec() + "\" FAIL \"Security error - " + e.getMessage() + 
"\"";
             if (logger.isDebugEnabled()) {
                 logger.debug(msg, e);
             } else {
                 logger.warning(msg + " - Debug for StackTrace");
             }
         } catch (Throwable e) {
-            final String msg = "\"" + requestType + " " + 
clientMetaData.getSpec() + "\" FAIL \"Unexpected error - " + e.getMessage() + 
"\"";
+            final String msg = "\"" + requestType + " " + 
clientProtocol.getSpec() + "\" FAIL \"Unexpected error - " + e.getMessage() + 
"\"";
             if (logger.isDebugEnabled()) {
                 logger.debug(msg, e);
             } else {

Modified: 
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java?rev=1513464&r1=1513463&r2=1513464&view=diff
==============================================================================
--- 
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
 (original)
+++ 
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
 Tue Aug 13 12:50:36 2013
@@ -296,7 +296,7 @@ class EjbRequestHandler extends RequestH
     public void processResponse(final Response response, final 
ObjectOutputStream out, final ProtocolMetaData metaData) throws Exception {
         if (EJBResponse.class.isInstance(response)) {
 
-            final EJBResponse res = (EJBResponse)response;
+            final EJBResponse res = (EJBResponse) response;
 
             try {
                 res.setMetaData(metaData);


Reply via email to