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) {
}
}
}
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) {
}
}
}
相关文章推荐
- JDK5什么是新的堵塞队列线程(四)
- spring读书笔记----Quartz Trigger JobStore出错解决
- java.sql.Date的问题
- 在MyEclipse和Eclipse中添加Hibernate开发工具
- java List api 排序
- 关于myeclipse的破解run.bat一闪而过的问题
- 求一个不含0的数列(可以有正数和负数)的最大子序列乘积java
- Java类加载器深入探索
- 自动化测试【Maven+Eclipse+Selenium+Java环境搭建和测试】
- Java求素数和最大公约数的简单代码示例
- java中对象和对象的引用
- Java关键字final、static使用总结
- Java中this用法小结
- JAVA向EXE文件尾追加配置信息,用于解决局版客户端的程序IP配置问题
- Java实现堆排序
- 深入了解java绘图机制
- java awt组件vs swing组件
- Java Enum的使用和深入理解
- JAVA基础--db06_java面向对象-二维数组
- 关于Java虚拟机性能调优方法的一些分析