KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfox > ejb > StatefulManager


1 /* JFox, the OpenSource J2EE Application Server
2  *
3  * Distributable under GNU LGPL license by gun.org
4  * more details please visit http://www.huihoo.org/jfox
5  */

6 package org.jfox.ejb;
7
8 import java.util.ArrayList JavaDoc;
9 import java.util.List JavaDoc;
10
11 /**
12  * 检测超时的 StalefulSessionBean
13  *
14  * @author <a HREF="mailto:young_yy@hotmail.com">Young Yang</a>
15  */

16
17 class StatefulManager {
18     // 每10分钟检查一次
19
private long sleepTime = 10000L;
20     private List JavaDoc pools = new ArrayList JavaDoc();
21
22     public StatefulManager() {
23         this(StatefulObjectPool.MAX_LIFE_TIME / 6);
24     }
25
26     public StatefulManager(long sleepTime) {
27         this.sleepTime = sleepTime;
28         ManagerThread mthread = new ManagerThread("StatefulSessionBean LifecycleManager Thread");
29         mthread.setDaemon(true);
30         mthread.start();
31     }
32
33     public void manageIt(StatefulObjectPool pool) {
34         pools.add(pool);
35     }
36
37     /**
38      * when undeploy, unmanage the pool
39      */

40     public void unmanageIt(StatefulObjectPool pool) {
41         pools.remove(pool);
42     }
43
44     class ManagerThread extends Thread JavaDoc {
45         public ManagerThread(String JavaDoc name) {
46             super(name);
47 // this.setPriority(Thread.MIN_PRIORITY);
48
}
49
50         public void run() {
51             while(true) {
52                 try {
53                     sleep(sleepTime);
54                 }
55                 catch(InterruptedException JavaDoc e) {
56                     e.printStackTrace();
57                 }
58                 for(int i = 0; i < pools.size(); i++) {
59                     ((StatefulObjectPool) pools.get(i)).lifecycleCheck();
60                 }
61             }
62         }
63     }
64
65     public static void main(String JavaDoc[] args) {
66
67     }
68 }
69
70
Popular Tags