src/java.corba/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelAcceptorImpl.java

Print this page

        

@@ -262,36 +262,46 @@
             getConnectionCache().stampTime(connection);
             getConnectionCache().put(this, connection);
 
             if (connection.shouldRegisterServerReadEvent()) {
                 Selector selector = orb.getTransportManager().getSelector(0);
+                if (selector != null) {
+                    if (orb.transportDebugFlag) {
+                        dprint(".accept: registerForEvent: " + connection);
+                    }
                 selector.registerForEvent(connection.getEventHandler());
             }
+            }
 
             getConnectionCache().reclaim();
 
         } catch (IOException e) {
             if (orb.transportDebugFlag) {
                 dprint(".accept:", e);
             }
-            orb.getTransportManager().getSelector(0).unregisterForEvent(this);
+            Selector selector = orb.getTransportManager().getSelector(0);
+            if (selector != null) {
+                selector.unregisterForEvent(this);
             // REVISIT - need to close - recreate - then register new one.
-            orb.getTransportManager().getSelector(0).registerForEvent(this);
+                selector.registerForEvent(this);
             // NOTE: if register cycling we do not want to shut down ORB
             // since local beans will still work.  Instead one will see
             // a growing log file to alert admin of problem.
         }
     }
+    }
 
     public void close ()
     {
         try {
             if (orb.transportDebugFlag) {
                 dprint(".close->:");
             }
             Selector selector = orb.getTransportManager().getSelector(0);
+            if (selector != null) {
             selector.unregisterForEvent(this);
+            }
             if (serverSocketChannel != null) {
                 serverSocketChannel.close();
             }
             if (serverSocket != null) {
                 serverSocket.close();

@@ -478,11 +488,13 @@
             // doWork(). Hence, the registering of the enabling of
             // the SelectionKey's interestOps is done here instead
             // of calling SelectionKey.interestOps(<interest op>).
 
             Selector selector = orb.getTransportManager().getSelector(0);
+            if (selector != null) {
             selector.registerInterestOps(this);
+            }
 
             if (orb.transportDebugFlag) {
                 dprint(".doWork<-:" + this);
             }
         }