[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transport/socket ...
Ron Sigal
ron_sigal at yahoo.com
Thu Feb 15 21:35:36 EST 2007
User: rsigal
Date: 07/02/15 21:35:36
Modified: src/main/org/jboss/remoting/transport/socket
SocketServerInvoker.java
Log:
JBREM-654: Synchronized ServerSocketRefresh.run(), ServerSocketRefresh.release() setNewServerSocketFactory(). Also, runs ServerSocketRefresh as a daemon thread.
Revision Changes Path
1.35 +43 -41 JBossRemoting/src/main/org/jboss/remoting/transport/socket/SocketServerInvoker.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SocketServerInvoker.java
===================================================================
RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/transport/socket/SocketServerInvoker.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- SocketServerInvoker.java 3 Feb 2007 05:20:19 -0000 1.34
+++ SocketServerInvoker.java 16 Feb 2007 02:35:36 -0000 1.35
@@ -49,7 +49,7 @@
* @author <a href="mailto:tom.elrod at jboss.com">Tom Elrod</a>
* @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
*
- * @version $Revision: 1.34 $
+ * @version $Revision: 1.35 $
* @jmx:mbean
*/
public class SocketServerInvoker extends ServerInvoker implements Runnable, SocketServerInvokerMBean
@@ -88,6 +88,7 @@
protected LinkedList threadpool;
protected boolean newServerSocketFactory = false;
+ protected Object serverSocketFactoryLock = new Object();
protected boolean reuseAddress = true;
@@ -113,8 +114,13 @@
*/
public void setNewServerSocketFactory(ServerSocketFactory serverSocketFactory)
{
+ synchronized (serverSocketFactoryLock)
+ {
newServerSocketFactory=true;
setServerSocketFactory(serverSocketFactory);
+ serverSocketFactoryLock.notify();
+ log.info("ServerSocketFactory has been updated");
+ }
}
/**
@@ -130,6 +136,7 @@
InetAddress bindAddress = InetAddress.getByName(getServerBindAddress());
serverSocket = createServerSocket(getServerBindPort(), backlog, bindAddress);
serverSocket.setReuseAddress(reuseAddress);
+ log.info("ServerSocket has been updated");
}
protected void setup() throws Exception
@@ -487,6 +494,7 @@
if(trace) { log.trace(this + " started execution of method run()"); }
ServerSocketRefresh thread = new ServerSocketRefresh();
+ thread.setDaemon(true);
thread.start();
try
@@ -644,8 +652,6 @@
*/
public class ServerSocketRefresh extends Thread
{
- boolean serverSocketLocked=false;
-
public ServerSocketRefresh()
{
super("ServerSocketRefresh");
@@ -656,10 +662,12 @@
while(true)
{
if(isInterrupted())break;
+
+ synchronized (serverSocketFactoryLock)
+ {
if(newServerSocketFactory)
{
log.debug("got notice about new ServerSocketFactory");
- serverSocketLocked=true;
try
{
log.debug("refreshing server socket");
@@ -670,34 +678,28 @@
log.debug("message is: "+e.getMessage());
}
log.debug("server socket refreshed");
- serverSocketLocked=false;
}
+
try
{
- Thread.sleep(10000);
+ serverSocketFactoryLock.wait();
}
catch (InterruptedException e)
{
- interrupt();
+ break;
+ }
}
}
}
/**
- * let the run() method resume when refresh is completed
+ * Let SocketServerInvoker.run() resume when refresh is completed
*/
public void release()
{
- while (serverSocketLocked)
+ synchronized (serverSocketFactoryLock)
{
- try
- {
- Thread.sleep(1000);
- }
- catch(InterruptedException ignored)
- {
-
- }
+ log.trace("passed through ServerSocketRefresh.release()");
}
}
}
More information about the jboss-cvs-commits
mailing list