Hi Thierry, I had modify MainPEITCacheApplication to override the stop but still not stopping
///////////////////////////////////////////////////////////// MainPEITCacheApplication ///////////////////////////////////////////////////////////// public class MainPEITCacheApplication extends Application { CompositeCacheManager ccm=null; String cachePropLoc=null; /** * A method to instantiate MainPEITCacheApplication * @param cachePropLoc String location of the cache property file */ public MainPEITCacheApplication(String cachePropLoc){ this.cachePropLoc=cachePropLoc; } /** * Creates a root Restlet that will receive all incoming calls. */ @Override public synchronized Restlet createInboundRoot() { Router router = new Router(getContext()); /* * */ //router.attach("/cache", CacheManagerResource.class); router.attach("/", CacheManagerResource.class); router.attach("/{region}",CacheManagerResource.class); TemplateRoute route= router.attach("/{region}/{dynamicurl}", CacheManagerResource.class); Variable v=new Variable(Variable.TYPE_ALL); route.getTemplate().getVariables().put("dynamicurl", v); try { ccm = CompositeCacheManager.getUnconfiguredInstance(); Properties props = new Properties(); props.load(new FileInputStream(this.cachePropLoc)); ccm.configure(props); } catch (Exception ex) { ex.printStackTrace(); } return router; } @Override public synchronized void stop() throws Exception { if(ccm!=null){ ccm.release(); ccm.shutDown(); ccm=null; } super.stop(); } } /////////////////////////////////////////////////////////////////////////////////////////////////// Jstack Output /////////////////////////////////////////////////////////////////////////////////////////////////// C:\Program Files\Java\jdk1.6.0_03\bin>jps -l -m 5484 com.ti.itg.peit.peitcache.actions.TestApp c:\webappsproperties\slaveconfig. xml 3828 sun.tools.jps.Jps -l -m 2056 3700 C:\Program Files\Java\jdk1.6.0_03\bin>jstack 5484 2010-04-20 20:11:19 Full thread dump Java HotSpot(TM) Client VM (1.6.0_03-b05 mixed mode, sharing): "DestroyJavaVM" prio=6 tid=0x003c7c00 nid=0x119c waiting on condition [0x0000000 0..0x00affd4c] java.lang.Thread.State: RUNNABLE "RMI RenewClean-[10.10.132.184:50006]" daemon prio=6 tid=0x03550800 nid=0x1610 i n Object.wait() [0x03a1f000..0x03a1fa94] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x24606ab0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x24606ab0> (a java.lang.ref.ReferenceQueue$Lock) at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(Unknow n Source) at java.lang.Thread.run(Unknown Source) "GC Daemon" daemon prio=2 tid=0x0354ec00 nid=0x1278 in Object.wait() [0x039cf000 ..0x039cfb14] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x245d7228> (a sun.misc.GC$LatencyLock) at sun.misc.GC$Daemon.run(Unknown Source) - locked <0x245d7228> (a sun.misc.GC$LatencyLock) "RMI Reaper" prio=6 tid=0x0354c800 nid=0x1470 in Object.wait() [0x0397f000..0x03 97fb94] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x245d6830> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x245d6830> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.rmi.transport.ObjectTable$Reaper.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "RMI TCP Accept-0" daemon prio=6 tid=0x0354b800 nid=0x1004 runnable [0x0392f000. .0x0392fc14] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(Unknown Source) - locked <0x245d6888> (a java.net.SocksSocketImpl) at java.net.ServerSocket.implAccept(Unknown Source) at java.net.ServerSocket.accept(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unkno wn Source) at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Thread-6" daemon prio=6 tid=0x0353c000 nid=0x570 waiting on condition [0x038df0 00..0x038dfc94] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at org.apache.jcs.auxiliary.remote.RemoteCacheMonitor.run(RemoteCacheMon itor.java:168) at java.lang.Thread.run(Unknown Source) "RMI Scheduler(0)" daemon prio=6 tid=0x0353ec00 nid=0x1400 waiting on condition [0x0388f000..0x0388fd14] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x245c8d48> (a java.util.concurrent.locks.Abstra ctQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject .awaitNanos(Unknown Source) at java.util.concurrent.DelayQueue.take(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.tak e(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.tak e(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "ElementEventQueue.QProcessor-1" daemon prio=6 tid=0x03540000 nid=0x1058 in Obje ct.wait() [0x0383f000..0x0383fd94] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x245adf18> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at org.apache.jcs.engine.control.event.ElementEventQueue.take(ElementEve ntQueue.java:181) - locked <0x245adf18> (a java.lang.Object) at org.apache.jcs.engine.control.event.ElementEventQueue.access$300(Elem entEventQueue.java:35) at org.apache.jcs.engine.control.event.ElementEventQueue$QProcessor.run( ElementEventQueue.java:245) "Low Memory Detector" daemon prio=6 tid=0x02c7ec00 nid=0x1450 runnable [0x000000 00..0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x02c7a000 nid=0x1708 waiting on condition [0x00000000..0x02f2f99c] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x02c79000 nid=0x1474 waiting on condition [0x00000000..0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x02c78000 nid=0x15e0 runnable [0x0000000 0..0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x02c6f800 nid=0x54c in Object.wait() [0x02e3f000. .0x02e3fa94] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x24544168> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x24544168> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x02c6ec00 nid=0x1408 in Object.wait() [0 x02def000..0x02defb14] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x245441f8> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x245441f8> (a java.lang.ref.Reference$Lock) "VM Thread" prio=10 tid=0x02c6d800 nid=0x158c runnable "VM Periodic Task Thread" prio=10 tid=0x02c80400 nid=0xf1c waiting on condition JNI global references: 857 Sincerely, Gerald Ternola ------------------------------------------------------ http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2590428