Listenerで発生した問題(2009-10-16)


今日はウェブアプリを作っていて、
環境:
    Tomcat -6.0
    JDK -1.5
    Hibernate 3.x
新しくlistenerを書いて、Tomcatに配置して、eclipseの中でデバッグして、1件の奇妙な事が現れました.
tomcatは絶えず再起動して、最後に問題が発生した場所に位置して、contextInitializedの中で私が呼び出します
Hibernateの検索方法を見て、この問題は本当におかしいです!
Listenerの関連コード:

 public class DefaultTaskListener implements ServletContextListener {
	
	private static final Log log = LogFactory.getLog(DefaultTaskListener.class);
	private TaskScheduler scheduler = TaskScheduler.getInstance();
	
	/***
	 *     
	 * 2008-5-19 16:38
	 */
	public void contextInitialized(ServletContextEvent sce) {
		if (log.isDebugEnabled()){
			log.debug(":::contextInitialized fired");
		}
		scheduler.start();
		//why this method raise server to reload ,when find() is executed.
		scheduler.initTasks();
		//--------------------------------------
	}

	public void contextDestroyed(ServletContextEvent sce) {
		if (log.isDebugEnabled()){
			log.debug("DefaultTaskListener contextDestroyed is execute!");
		}
		try{
			scheduler.shutdown();
			if (log.isDebugEnabled()){
				log.debug("DefaultTaskListener stop is success!");
			}
		}catch(Exception ex){
			log.error("DefaultTaskListener stop is fail!");
			ex.printStackTrace();
		}
	}

TaskScheduler.InitTasks()の部分コード

 public void initTasks() {
		int successCount = 0;
		TaskInfoSrv srv = new TaskInfoSrv();
		try{
			List list = (List) srv.findPOs(null, null, null);
                        //      tomcat       
                }catch(...){
                }
                // other code

まだ解決していないので、まずサーブレットを書いて同じ機能を完成してからにしよう.