web.xml里加上一句
<listener>
<listener-class>
com.smartone.sn.nsms.emailthread.EmailMonitoring
</listener-class>
</listener>
com.smartone.sn.nsms.emailthread.EmailMonitoring.java:package com.smartone.sn.nsms.emailthread;import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;import org.apache.log4j.Logger;public class EmailMonitoring implements ServletContextListener { Logger logger = Logger.getLogger(EmailMonitoring.class); private static Timer timer = new Timer(true); /**
 * @see ServletContextListener#contextInitialized(ServletContextEvent)
 */ static final String MAIL_CHECKING_INTERVAL = "email-checking-interval";
static final String MAIL_CONFIG_FILE = "email-config-file"; static final int ONE_SECOND = 1000;
static final int ONE_MINUTE = 60 * ONE_SECOND;
static final int ONE_HOUR = 60 * ONE_MINUTE; public void contextInitialized(ServletContextEvent arg0) { // TODO Auto-generated method stub // Enumeration e = arg0.getServletContext().getInitParameterNames();
//
// while (e.hasMoreElements()) {
// System.out.println(e.nextElement().toString());
// } int checkingInterval = Integer.parseInt(arg0.getServletContext()
.getInitParameter(MAIL_CHECKING_INTERVAL));
String mailConfigFilename = arg0.getServletContext().getInitParameter(
MAIL_CONFIG_FILE); String mailhost = arg0.getServletContext().getInitParameter(
"email-pop3-host");
String alert2system = arg0.getServletContext().getInitParameter(
"email-pop3-user");
String mailpassword = arg0.getServletContext().getInitParameter(
"email-pop3-password"); // timer = new Timer(true); Properties prop = new Properties();
prop.put("mail.pop3.user", alert2system);
prop.put("mail.pop3.password", mailpassword);
prop.put("mail.pop3.host", mailhost);
prop.put("mail.pop3.disabletop", "true");
// try {
// prop.load(new FileInputStream(mailConfigFilename));
// } catch (Exception ex) {
// logger.error("error when loading properties file", ex);
// } TimerTask task = new CheckMailTimerTask(prop); timer.scheduleAtFixedRate(task, ONE_MINUTE, checkingInterval); } /**
 * @see ServletContextListener#contextDestroyed(ServletContextEvent)
 */
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
timer.cancel();
}}
报错:
SEVERE: Exception sending context initialized event to listener instance of class com.smartone.sn.nsms.emailthread.EmailMonitoring
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:417)
at java.lang.Integer.parseInt(Integer.java:499)
at com.smartone.sn.nsms.emailthread.EmailMonitoring.contextInitialized(Unknown Source)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Aug 28, 2012 5:21:13 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart

解决方案 »

  1.   

    SEVERE: Exception sending context initialized event to listener instance of class com.smartone.sn.nsms.emailthread.EmailMonitoring
    java.lang.NumberFormatException: null你企图把null识别为数字。错误语句应该是因为:
      arg0.getServletContext().getInitParameter(MAIL_CHECKING_INTERVAL)
    没有取得返回值,所以:
      int checkingInterval = Integer.parseInt(arg0.getServletContext()
    .getInitParameter(MAIL_CHECKING_INTERVAL));
    就parseInt执行失败了。
      

  2.   

    如楼上所说,很可能是MAIL_CHECKING_INTERVAL和MAIL_CHECKING_INTERVAL没有取道引起的
      

  3.   

    有没有修改建议..这套东西是我自己写的系统,接合到另外一个系统那里就动不了了......
    本人ssh大新手一枚..一边学一边写的