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);