Author: ron.sigal(a)jboss.com
Date: 2010-12-15 18:08:30 -0500 (Wed, 15 Dec 2010)
New Revision: 6164
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/ServerInvoker.java
Log:
JBREM-1144: Added useServerConnectionIdentity variable, which determines if a unique
serverId is created.
Modified: remoting2/branches/2.x/src/main/org/jboss/remoting/ServerInvoker.java
===================================================================
--- remoting2/branches/2.x/src/main/org/jboss/remoting/ServerInvoker.java 2010-12-15
23:07:30 UTC (rev 6163)
+++ remoting2/branches/2.x/src/main/org/jboss/remoting/ServerInvoker.java 2010-12-15
23:08:30 UTC (rev 6164)
@@ -38,6 +38,7 @@
import org.jboss.remoting.transport.PortUtil;
import org.jboss.remoting.util.SecurityUtility;
import org.jboss.remoting.serialization.ClassLoaderUtility;
+import org.jboss.util.id.GUID;
import org.jboss.util.threadpool.BasicThreadPool;
import org.jboss.util.threadpool.BlockingMode;
import org.jboss.util.threadpool.ThreadPool;
@@ -312,6 +313,10 @@
protected boolean registerCallbackListeners = true;
protected boolean useClientConnectionIdentity;
+ protected boolean useServerConnectionIdentity;
+
+ /** Used by ConnectionValidator to detect a change of server. **/
+ protected String serverId = new GUID().toString();
// Constructors
---------------------------------------------------------------------------------
@@ -776,6 +781,16 @@
this.useClientConnectionIdentity = useClientConnectionIdentity;
}
+ public boolean isUseServerConnectionIdentity()
+ {
+ return useServerConnectionIdentity;
+ }
+
+ public void setUseServerConnectionIdentity(boolean useServerConnectionIdentity)
+ {
+ this.useServerConnectionIdentity = useServerConnectionIdentity;
+ }
+
public Object invoke(Object invoke) throws IOException
{
InvocationRequest request = null;
@@ -848,8 +863,29 @@
// Comes from ConnectionValidator configured to tie validation with
lease.
boolean response = checkForClientLease(invokerSessionId);
if (trace) log.trace(this + " responding " + response +
" to $PING$ for invoker sessionId " + invokerSessionId);
- return new Boolean(response);
+ if (metadata.get(Remoting.USE_SERVER_CONNECTION_IDENTITY) != null)
+ {
+ Map responseMap = new HashMap();
+ responseMap.put(Remoting.SERVER_ID, serverId);
+ if (trace) log.trace(this + " returning serverId: " +
serverId);
+ return new InvocationResponse(invocation.getSessionId(), new
Boolean(response), false, responseMap);
+ }
+ else
+ {
+ if (trace) log.trace(this + " not returning serverId: "
+ serverId);
+ return new Boolean(response);
+ }
}
+ else
+ {
+ if (metadata.get(Remoting.USE_SERVER_CONNECTION_IDENTITY) != null)
+ {
+ Map responseMap = new HashMap();
+ responseMap.put(Remoting.SERVER_ID, serverId);
+ if (trace) log.trace(this + " returning serverId: " +
serverId);
+ return new InvocationResponse(invocation.getSessionId(), null,
false, responseMap);
+ }
+ }
}
if (leaseManagement)
@@ -1174,6 +1210,13 @@
{
useClientConnectionIdentity =
Boolean.valueOf(useClientConnectionIdentityString).booleanValue();
}
+
+ // config for useServerConnectionIdentity
+ String useServerConnectionIdentityString =
(String)config.get(Remoting.USE_SERVER_CONNECTION_IDENTITY);
+ if(useServerConnectionIdentityString != null)
+ {
+ useServerConnectionIdentity =
Boolean.valueOf(useServerConnectionIdentityString).booleanValue();
+ }
// Inject ConnectionListener
String connectionListener = (String)config.get(CONNECTION_LISTENER);
Show replies by date