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