您的位置:首页 > 编程语言 > Java开发

java 监听器ServletContextListener,服务启动加载及定时器

2015-09-21 09:43 465 查看
   - 服务器启动时,ServletContextListener 的
contextInitialized()方法被调用,所以在里面创建好缓存。

实现方式。

    web.xml中加入配置文件

<!-- 监听器 -->

<listener>

<description>ServletContextListener</description>

<listener-class>com.listener.ContextInitListener</listener-class>

</listener>

   代码实现

package com.listener;

import java.util.List;

import java.util.Locale;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Timer;

import java.util.UUID;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import org.apache.log4j.Logger;

import org.springframework.context.ApplicationContext;

import org.springframework.web.context.support.WebApplicationContextUtils;

import org.springframework.web.servlet.i18n.SessionLocaleResolver;

import org.springframework.web.util.WebUtils;

import com.backoffice.action.IndexAction;

import com.bean.ConstantBean;

import com.entity.SysLanguage;

import com.service.impl.IndexService;

/**

 * xujun Application Lifecycle Listener implementation class ContextInitListener

 *

 */

public class ContextInitListener implements ServletContextListener {

//定时器类
private Timer timer = null;

private final Logger logger = Logger.getLogger(ContextInitListener.class);

/**
* Default constructor.
*/
public ContextInitListener() {
// TODO Auto-generated constructor stub
}

/**
* @see ServletContextListener#contextInitialized(ServletContextEvent)
*/
public void contextInitialized(ServletContextEvent arg0) {
try {

timer = new Timer(true);

logger.info("定时器启动");

ApplicationContext context = WebApplicationContextUtils
.getRequiredWebApplicationContext(arg0.getServletContext());

// 定时任务设定
// ,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时,24*60*60*1000表示一天。
timer.schedule(new categoryTimer(context), 0, 24 * 60 * 60 * 1000);

// 加载多语言(没设定时)
Object obj = context.getBean("indexService");
IndexService usi = (IndexService) obj;

List<SysLanguage> languages = usi.getLanguage();

if (languages != null && languages.size() > 0) {
for (SysLanguage language : languages) {

ConstantBean.zhCache.put(language.getLanguageKey(),
language.getZh());
ConstantBean.myanmarCache.put(language.getLanguageKey(),
language.getMyanmar());

}
}

} catch (Exception e) {

}
}

/**
* @see ServletContextListener#contextDestroyed(ServletContextEvent)
*/
public void contextDestroyed(ServletContextEvent arg0) {
timer.cancel();
arg0.getServletContext().log("定时器销毁");
}

}

定时任务

package com.listener;

import java.util.ArrayList;

import java.util.List;

import java.util.TimerTask;

import net.sf.json.JSONArray;

import org.springframework.context.ApplicationContext;

import com.bean.CategoryInfo;

import com.bean.ConstantBean;

import com.service.impl.CategoryService;

/**

 * 定时加载类目

 * 

 * @author xujun

 */

public class categoryTimer extends TimerTask {

private ApplicationContext context;

public categoryTimer(ApplicationContext context) {
this.context = context;
}

@Override
public void run() {
Object obj = context.getBean("categoryService");
CategoryService categoryService = (CategoryService) obj;

List<CategoryInfo> list = new ArrayList<CategoryInfo>();

try {
list = categoryService.getAllCategory();

JSONArray jsonArray = JSONArray.fromObject(list); 

ConstantBean.CategoryInfos = jsonArray.toString();

} catch (Exception e) {

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息