tomcat设置监听器,报错bean

tomcat设置监听器,报错bean,第1张

可能的原因有:

1. Tomcat配置文件中的<Listener>元素配置错误;

2. 所配置的监听器类不存在;

3. 所配置的监听器类没有实现ServletContextListener接口;

4. 所配置的监听器类没有在Tomcat的classpath中;

5. 所配置的监听器类没有正确的构造函数;

6. 所配置的监听器类没有正确的初始化方法;

7. 所配置的监听器类没有正确的销毁方法。

java有个Listener! 随tomcat启动而调用自己写的方法!也可以循环调用!就是每过几小时掉用自己的方法web.xml<listener>

<listener-class>com.function.SysContextListener </listener-class>

</listener>SysContextListener.javapackage com.functionimport java.util.Timer//定时器

import javax.servlet.ServletContextEvent

import javax.servlet.ServletContextListener

public class SysContextListener implements ServletContextListener

{

private Timer timer = null

public void contextInitialized(ServletContextEvent event)

{//在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能

timer = new Timer(true)

System.out.println("启动成功")

event.getServletContext().log("定时器已启动--------------------------------------------------")//添加日志,可在tomcat日志中查看到

// timer.schedule(new exportHistoryBean(event.getServletContext(),DealDate.getTime()),0,5*1000)//调用exportHistoryBean,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时。

event.getServletContext().log("已经添加任务--------------------------------------------------")

}

public void contextDestroyed(ServletContextEvent event)

{//在这里关闭监听器,所以在这里销毁定时器。

timer.cancel()

event.getServletContext().log("定时器销毁--------------------------------------------------")

} } exportHistoryBean.javapackage com.functionimport java.util.Calendar

import java.util.TimerTask

import javax.servlet.ServletContext

public class exportHistoryBean extends TimerTask

{

private static final int C_SCHEDULE_HOUR = 0

private static boolean isRunning = false

private ServletContext context = null

public exportHistoryBean(ServletContext context)

{

this.context = context

}

public void run()

{

Calendar c = Calendar.getInstance()

//if(!isRunning)

// {

// if(C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY))

// {

isRunning = true

context.log("开始执行指定任务--------------------------------------------------")

int day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH)

new WebServiceBean().doWork()//这里就是调用自己的方法了

isRunning = false

context.log("指定任务执行结束--------------------------------------------------")

// }

// else

// {

// context.log("上一次任务执行还未结束")

// }

// }

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11567592.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存