Index: src/java/com/sun/enterprise/mgmt/transport/grizzly/GrizzlyNetworkManager.java =================================================================== --- src/java/com/sun/enterprise/mgmt/transport/grizzly/GrizzlyNetworkManager.java (revision 1.1.2.6) +++ src/java/com/sun/enterprise/mgmt/transport/grizzly/GrizzlyNetworkManager.java Tue Jan 12 17:03:01 KST 2010 @@ -66,6 +66,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ExecutorService; import java.io.IOException; import java.net.InetAddress; import java.net.URI; @@ -107,6 +108,7 @@ private int writeSelectorPoolSize; private String virtualUriList; private DefaultThreadPool threadPool; + private ExecutorService multicastSenderThreadPool; private final ConcurrentHashMap pingMessageLockMap = new ConcurrentHashMap(); @@ -255,26 +257,28 @@ udpSender = udpConnectorWrapper; List virtualPeerIdList = getVirtualPeerIDList( virtualUriList ); if( virtualPeerIdList != null && !virtualPeerIdList.isEmpty() ) { + multicastSenderThreadPool = new ThreadPoolExecutor( 10, 10, 60 * 1000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue( 1024 ) ); multicastSender = new VirtualMulticastSender( host, multicastAddress, multicastPort, networkInterfaceName, multicastPacketSize, localPeerID, - new ThreadPoolExecutor( 10, 10, 60 * 1000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue( 1024 ) ), + multicastSenderThreadPool, this, virtualPeerIdList ); } else { if( GrizzlyUtil.isSupportNIOMulticast() ) { multicastSender = udpConnectorWrapper; } else { + multicastSenderThreadPool = new ThreadPoolExecutor( 10, 10, 60 * 1000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue( 1024 ) ); multicastSender = new BlockingIOMulticastSender( host, multicastAddress, multicastPort, networkInterfaceName, multicastPacketSize, localPeerID, - new ThreadPoolExecutor( 10, 10, 60 * 1000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue( 1024 ) ), + multicastSenderThreadPool, this ); } } @@ -352,6 +356,8 @@ udpSender.stop(); if( multicastSender != null ) multicastSender.stop(); + if( multicastSenderThreadPool != null ) + multicastSenderThreadPool.shutdown(); peerIDMap.clear(); selectionKeyMap.clear(); pingMessageLockMap.clear(); Index: src/java/com/sun/enterprise/mgmt/transport/BlockingIOMulticastSender.java =================================================================== --- src/java/com/sun/enterprise/mgmt/transport/BlockingIOMulticastSender.java (revision 1.1.2.6) +++ src/java/com/sun/enterprise/mgmt/transport/BlockingIOMulticastSender.java Tue Jan 12 16:59:19 KST 2010 @@ -187,7 +187,6 @@ } multicastSocket.close(); multicastSocket = null; - ((ThreadPoolExecutor)executor).shutdown(); } public void run() { Index: src/java/com/sun/enterprise/ee/cms/impl/common/Router.java =================================================================== --- src/java/com/sun/enterprise/ee/cms/impl/common/Router.java (revision 1.12.2.4) +++ src/java/com/sun/enterprise/ee/cms/impl/common/Router.java Tue Jan 12 13:37:06 KST 2010 @@ -248,7 +248,7 @@ * @param componentName the component name */ public void removeFailureRecoveryAFDestination(final String componentName) { - messageAF.remove(componentName); + failureRecoveryAF.remove(componentName); } /**