[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transport/bisocket ...
Ron Sigal
ron_sigal at yahoo.com
Tue Dec 19 01:09:22 EST 2006
User: rsigal
Date: 06/12/19 01:09:22
Modified: src/main/org/jboss/remoting/transport/bisocket Tag:
remoting_2_x BisocketServerInvoker.java
Log:
JBREM-650: Avoid creating server socket for callback server invoker.
Revision Changes Path
No revision
No revision
1.1.2.2 +74 -35 JBossRemoting/src/main/org/jboss/remoting/transport/bisocket/Attic/BisocketServerInvoker.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: BisocketServerInvoker.java
===================================================================
RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/transport/bisocket/Attic/BisocketServerInvoker.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -b -r1.1.2.1 -r1.1.2.2
--- BisocketServerInvoker.java 14 Dec 2006 01:03:55 -0000 1.1.2.1
+++ BisocketServerInvoker.java 19 Dec 2006 06:09:21 -0000 1.1.2.2
@@ -33,17 +33,17 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.Map;
-import java.util.Set;
import java.util.TimerTask;
-import org.apache.commons.logging.Log;
import org.jboss.remoting.Client;
import org.jboss.remoting.InvocationRequest;
import org.jboss.remoting.InvokerLocator;
import org.jboss.remoting.ServerInvocationHandler;
import org.jboss.remoting.invocation.InternalInvocation;
import org.jboss.remoting.transport.PortUtil;
+import org.jboss.remoting.transport.socket.LRUPool;
import org.jboss.remoting.transport.socket.ServerThread;
import org.jboss.remoting.transport.socket.SocketServerInvoker;
import org.jboss.remoting.util.TimerUtil;
@@ -52,7 +52,7 @@
/**
*
* @author <a href="ron.sigal at jboss.com">Ron Sigal</a>
- * @version $Revision: 1.1.2.1 $
+ * @version $Revision: 1.1.2.2 $
* <p>
* Copyright Nov 23, 2006
* </p>
@@ -69,6 +69,7 @@
private int pingFrequency = Bisocket.PING_FREQUENCY_DEFAULT;
private int pingWindow = 2 * pingFrequency;
private ControlMonitorTimerTask controlMonitorTimerTask;
+ protected boolean isCallbackServer = false;
public static BisocketServerInvoker getBisocketServerInvoker(String listenerId)
@@ -97,26 +98,31 @@
public void start() throws IOException
{
- super.start();
-
- boolean startSecondaryPort = false;
- Object o = configuration.get(Bisocket.START_SECONDARY_PORT);
-
- if (o != null)
+ if (isCallbackServer)
{
- if (o instanceof String)
- startSecondaryPort = Boolean.valueOf((String) o).booleanValue();
- else if (o instanceof Boolean)
- startSecondaryPort = ((Boolean) o).booleanValue();
+ if(maxPoolSize <= 0)
+ {
+ maxPoolSize = MAX_POOL_SIZE_DEFAULT;
+ }
+ clientpool = new LRUPool(2, maxPoolSize);
+ clientpool.create();
+ threadpool = new LinkedList();
+ running = true;
+ started = true;
+ }
else
- log.error("unrecognized value for configuration key \"" +
- Bisocket.START_SECONDARY_PORT + "\": " + o);
-
- if (startSecondaryPort)
{
+ super.start();
InetAddress host = getServerSocket().getInetAddress();
int freePort = PortUtil.findFreePort(host.getHostAddress());
+ if (serverSocketFactory != null)
+ {
+ secondaryServerSocket = serverSocketFactory.createServerSocket(freePort, 0, host);
+ }
+ else
+ {
secondaryServerSocket = new ServerSocket(freePort, 0, host);
+ }
secondaryLocator = new InvokerLocator(null, host.getHostAddress(), freePort, null, null);
secondaryServerSocketThread = new SecondaryServerSocketThread(secondaryServerSocket);
secondaryServerSocketThread.setName("secondaryServerSocketThread");
@@ -124,7 +130,6 @@
secondaryServerSocketThread.start();
log.info("started secondary port: " + host + ":" + freePort);
}
- }
// ServerInvocationHandler handler = new InternalInvocationHandler(secondaryServerSocket);
// addInvocationHandler(Bisocket.BISOCKET_INTERNAL_SUBSYSTEM, handler);
}
@@ -147,7 +152,12 @@
listenerIdToInvokerLocatorMap.put(listenerId, locator);
log.info("creating control connection: " + locator);
- Socket socket = new Socket(locator.getHost(), locator.getPort());
+// Socket socket = new Socket(locator.getHost(), locator.getPort());
+ Socket socket = null;
+ if (socketFactory != null)
+ socket = socketFactory.createSocket(locator.getHost(), locator.getPort());
+ else
+ socket = new Socket(locator.getHost(), locator.getPort());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.write(Bisocket.CREATE_ORDINARY_SOCKET);
dos.writeUTF(listenerId);
@@ -167,7 +177,8 @@
{
controlMonitorTimerTask = new ControlMonitorTimerTask();
TimerUtil.schedule(controlMonitorTimerTask, pingFrequency);
- log.info("scheduled ControlMonitorTimerTask: " + controlMonitorTimerTask);
+ log.info(this + ": scheduled ControlMonitorTimerTask: " + controlMonitorTimerTask);
+ log.info("pingFrequency: " + pingFrequency);
}
}
@@ -186,9 +197,30 @@
}
+ protected void setup() throws Exception
+ {
+ Object o = configuration.get(Bisocket.IS_CALLBACK_SERVER);
+
+ if (o != null)
+ {
+ if (o instanceof String)
+ isCallbackServer = Boolean.valueOf((String) o).booleanValue();
+ else if (o instanceof Boolean)
+ isCallbackServer = ((Boolean) o).booleanValue();
+ else
+ log.error("unrecognized value for configuration key \"" +
+ Bisocket.IS_CALLBACK_SERVER + "\": " + o);
+ }
+
+ super.setup();
+ }
+
+
protected void cleanup()
{
super.cleanup();
+ log.info(this + ": $$$entering cleanup()");
+ log.info("controlMonitorTimerTask: " + this.controlMonitorTimerTask);
if (controlMonitorTimerTask != null)
{
@@ -201,6 +233,7 @@
t.shutdown();
it.remove();
}
+ log.info("secondaryServerSocketThread: " + secondaryServerSocketThread);
if (secondaryServerSocketThread != null)
{
secondaryServerSocketThread.shutdown();
@@ -330,6 +363,9 @@
// String listenerId = dis.readUTF();
// dis.readUTF();
InvokerLocator locator = (InvokerLocator) listenerIdToInvokerLocatorMap.get(listenerId);
+ if (socketFactory != null)
+ socket = socketFactory.createSocket(locator.getHost(), locator.getPort());
+ else
socket = new Socket(locator.getHost(), locator.getPort());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.write(Bisocket.CREATE_ORDINARY_SOCKET);
@@ -354,7 +390,8 @@
{
if (running)
{
- if ("socket closed".equals(e.getMessage()))
+ if ("socket closed".equals(e.getMessage()) ||
+ "Socket is closed".equals(e.getMessage()))
{
shutdown();
return;
@@ -411,7 +448,7 @@
class SecondaryServerSocketThread extends Thread
{
private ServerSocket secondaryServerSocket;
- boolean running;
+ boolean running = true;
SecondaryServerSocketThread(ServerSocket secondaryServerSocket) throws IOException
{
@@ -422,11 +459,11 @@
{
running = false;
interrupt();
+ log.info(this + ": shut down");
}
public void run()
{
- running = true;
while (running)
{
try
@@ -474,6 +511,8 @@
class ControlMonitorTimerTask extends TimerTask
{
+ private boolean running = true;
+
void shutdown()
{
running = false;
More information about the jboss-cvs-commits
mailing list