我在contextInitialized里面,使用timer定时器,发现这个contextInitialized会启动两次,后来经过仔细观察,发现是因为tomcat里面,我配置了两个网站,后来去掉一个后,contextInitialized就只运行一次了但是这是在本地,传到服务器的时候,服务器上可是有近10个网站的,我该怎么办呢?请大家给个解决办法也不一定是要解决contextInitialized启动两次,因为我的主要目的,是以固定的时间,对数据进行更新基本代码如下:
public class ContextListener extends HttpServlet implements
ServletContextListener
{
public ContextListener()
{
} private java.util.Timer timer = null; public void contextInitialized(ServletContextEvent event)
{
timer = new java.util.Timer(true);
timer.schedule(new MyTask(event.getServletContext()), 0, 5000);
} public void contextDestroyed(ServletContextEvent event)
{
timer.cancel();
}
}
public class ContextListener extends HttpServlet implements
ServletContextListener
{
public ContextListener()
{
} private java.util.Timer timer = null; public void contextInitialized(ServletContextEvent event)
{
timer = new java.util.Timer(true);
timer.schedule(new MyTask(event.getServletContext()), 0, 5000);
} public void contextDestroyed(ServletContextEvent event)
{
timer.cancel();
}
}
解决方案 »
- The processing instruction target matching "[xX][mM][lL]" is not allowed.
- 如何在action中接收jsp页面传来的日期类型的数据
- 在jsp中如何做下载?
- servlet如何转向Action
- 关于struts2在jsp页面如何提交list<自定义对象>?
- 有用过FCKeditor 在线编辑器的朋友进来帮忙~~~~~~~~~~~~~
- 如何弹出菜单信息提示框
- 请教大哥大姐们一个问题
- ------- 这样保存request为什么不对?
- 如何生成图表(K线图)在JSP的页面里
- 关于Connection reset by peer: socket write error 的问题
- eclipse中javascript代码执行问题???
因为每个虚拟主机或者虚拟路径都有各自的CLASSPATH,所有就有各自的ClassLoader
他们在这一层是各自独立的。
你有10个站点,当然就各自启动各自的。如果你确认这10个站点却是运行在1个机器上,你可以用一种比较卑鄙的方法来解决,我给你个思路,
强行占用一个端口try{
ServerSocket s = new ServerSocket(11111); // 强行占用,如果已经被其它站点占用了,则会跑出异常
timer = new java.util.Timer(true);
...
}catch(Exception ex){
}这样就能保证虽然10个都启动了,但最后只有其中一个有效。