web应用中一些放在内存里面带来方便操作
来源:互联网 发布:淘宝女装旗袍 编辑:程序博客网 时间:2024/06/05 13:30
如题:大家都知道放在常量池里的东西花的代价大,所以好多不用放在里面。总有一些需求需要放在里面。
各种web服务器启动都会初始化很多参数、对象。
乱了,好久不记笔记啦。今天用了一些觉得对最近以后有温习东西,比如:读配置文件,可配置。文件上传、下载路径,域名、全局参数、常用请求,数据库定义,邮件服务器设置,短信服务器设置等。
一个监听者+timer.schedule()的定时器。schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
与spring提供的定时器灵活,想停就停,想开就开。却花了不少代价。
package com.officeFrame.web.listener;import java.io.IOException;import java.net.URL;import java.util.ArrayList;import java.util.List;import java.util.Timer;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.http.HttpServlet;import org.apache.commons.digester.Digester;import org.xml.sax.SAXException;import com.officeFrame.model.TaskBean;import com.officeFrame.model.Tasking;import com.officeFrame.utils.Loader;@SuppressWarnings("unchecked")public class OfficeTask extends HttpServlet implements ServletContextListener{/** * */private static final long serialVersionUID = 9077777654593863564L;private Timer timer = null; //private static final Logger logger = Logger.getLogger(OfficeTask.class);private static List stopTaskNameList;//被停止的服务的名称//关闭某个服务public static void stopTask(String taskName){if (stopTaskNameList==null){stopTaskNameList=new ArrayList();stopTaskNameList.add(taskName);}else{boolean in=false;for (int i=0;i<stopTaskNameList.size();i++){String myTaskName=(String) stopTaskNameList.get(i); if (myTaskName.equals(taskName)){in=true;break;}}if (in==false)stopTaskNameList.add(taskName);}}//将关闭的服务启动起来public static void startTask(String taskName){if (stopTaskNameList!=null){for (int i=0;i<stopTaskNameList.size();i++){String myTaskName=(String) stopTaskNameList.get(i); if (myTaskName.equals(taskName))stopTaskNameList.remove(i);}}}//判断服务是否被停了public static boolean isBeStoped(String taskName){boolean stop=false;if (stopTaskNameList!=null){for (int i=0;i<stopTaskNameList.size();i++){String myTaskName=(String) stopTaskNameList.get(i); if (myTaskName.equals(taskName)){stop=true;break;}}}return stop;} public void contextInitialized(ServletContextEvent event) { //定时任务管理 timer = new Timer(true); List ls=beginTaskOfConfigXML(); for (int i=0;i<ls.size();i++) { TaskBean taskBean=(TaskBean) ls.get(i); if (taskBean.isRun()==true) { if (taskBean.getInterval()>0) { //安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。 timer.schedule(new Tasking(event.getServletContext(),taskBean), 0, taskBean.getInterval()*1000); } } } } public void contextDestroyed(ServletContextEvent event) { timer.cancel(); }public void load(){;}private List beginTaskOfConfigXML(){List retList=new ArrayList();Digester digester = new Digester();URL url = Loader.getResource("SysConfig.xml"); digester.addObjectCreate("System/tasks", ArrayList.class); digester.addObjectCreate("System/tasks/task",TaskBean.class); digester.addSetProperties("System/tasks/task"); digester.addSetNext("System/tasks/task", "add"); try {retList = (ArrayList) digester.parse(url.openStream());} catch (IOException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();}return retList;}}
用到org.apache.commons.digester.Digester解析xml转java对象
xml中
<listener><listener-class>com.officeFrame.web.listener.OfficeTask</listener-class></listener>
后续
- web应用中一些放在内存里面带来方便操作
- 在内存中绘图
- 在内存中绘图
- java中一些数据类型在内存中的存放。
- 如何 操作在内存中 xml 格式的内容
- Slackware Linux将Wine的Temp文件放在内存中
- 设置环境变量时,export只对当前登录bash登录session有用,放在内存中。
- HLSL中struct里面的变量在内存中的放置方式
- 数据在内存中各种形式
- 在内存中加载DLL
- 对象在内存中结构
- float在内存中存储
- GDI+在内存中绘图
- Bitmap在内存中加载
- VC在内存中绘图
- 在内存中显示位图
- 字符串常量放在内存中的静态存储区
- 当用java程序去频繁读取大文件的时候将读取到的内容放在内存中
- RestFul 文档资源汇总
- 触摸屏的校准
- C++ const
- sed行尾追加变成了行首替换
- java数组定义及使用
- web应用中一些放在内存里面带来方便操作
- Android content provider
- XML解析使用固定格式解析本地与解析Tomcat服务器上面的xml文件
- ErrorCode:1175.You are using safe update mode and you tried to update a table without a WHERE that u
- hdu 1327 Definite Values--map
- 设计模式中类的关系
- 转:Service创建有两种方法: startService或者bindService
- 关于s3c6410的SD卡启动
- 谈一谈自己对依赖、关联、聚合和组合之间区别的理解