[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transport/socket ...
Ron Sigal
ron_sigal at yahoo.com
Sun Mar 11 16:49:12 EDT 2007
User: rsigal
Date: 07/03/11 16:49:12
Modified: src/main/org/jboss/remoting/transport/socket Tag:
remoting_2_x SocketServerInvoker.java
Log:
JBREM-654: Updated previous fix to NPE problem.
Revision Changes Path
No revision
No revision
1.30.2.12 +24 -12 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.30.2.11
retrieving revision 1.30.2.12
diff -u -b -r1.30.2.11 -r1.30.2.12
--- SocketServerInvoker.java 25 Feb 2007 20:39:09 -0000 1.30.2.11
+++ SocketServerInvoker.java 11 Mar 2007 20:49:11 -0000 1.30.2.12
@@ -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.30.2.11 $
+ * @version $Revision: 1.30.2.12 $
* @jmx:mbean
*/
public class SocketServerInvoker extends ServerInvoker implements Runnable, SocketServerInvokerMBean
@@ -134,15 +134,19 @@
log.trace("entering refreshServerSocket()");
synchronized (serverSocketFactoryLock)
{
+ // If release() is able to enter its synchronized block and sees
+ // serverSocket == null, then it knows that something went wrong.
newServerSocketFactory=false;
- serverSocket.close();
+ ServerSocket oldServerSocket = serverSocket;
serverSocket = null;
+ oldServerSocket.close();
InetAddress bindAddress = InetAddress.getByName(getServerBindAddress());
- serverSocket = createServerSocket(getServerBindPort(), backlog, bindAddress);
- serverSocket.setReuseAddress(reuseAddress);
+ ServerSocket newServerSocket = createServerSocket(getServerBindPort(), backlog, bindAddress);
+ newServerSocket.setReuseAddress(reuseAddress);
+ serverSocket = newServerSocket;
log.info("ServerSocket has been updated");
}
- log.trace("leaving refreshServerSocket()");
+ log.trace("leavinging refreshServerSocket()");
}
protected void setup() throws Exception
@@ -530,17 +534,21 @@
log.error("SSLServerSocket error", e);
return;
}
+ catch (InvalidStateException e)
+ {
+ log.error("Cannot proceed without functioning server socket. Shutting down");
+ stop();
+ }
catch(Throwable ex)
{
if(running)
{
- if (serverSocket == null)
- {
- log.error("Cannot proceed without function server socket. Shutting down");
- stop();
- }
log.error(this + " failed to handle socket", ex);
}
+ else
+ {
+ log.debug(this + " caught exception in run()", ex);
+ }
}
}
}
@@ -707,10 +715,14 @@
/**
* Let SocketServerInvoker.run() resume when refresh is completed
*/
- public void release()
+ public void release() throws InvalidStateException
{
synchronized (serverSocketFactoryLock)
{
+ if (serverSocket == null)
+ {
+ throw new InvalidStateException("error refreshing ServerSocket");
+ }
log.trace("passed through ServerSocketRefresh.release()");
}
}
More information about the jboss-cvs-commits
mailing list