1. 程式人生 > >使用@WebServlet配置loadOnStartup的時候不起作用的解決方法

使用@WebServlet配置loadOnStartup的時候不起作用的解決方法

今天發現,如果配置loadOnStartup為啟動時載入的Servlet,如果僅僅配置loadOnStartup的Annotation

package com.zhen.servlet;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.swing.Timer;

/**
 * Servlet implementation class TimerServlet
 */
@WebServlet(loadOnStartup=1)
public class TimerServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		new Timer(1000,new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println(new Date());
			}
		}).start();
	}
}
這個Servlet將看不到結果,但是如果加上urlPatterns或者value的值,就能看到效果,目前原因不明
package com.zhen.servlet;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.swing.Timer;

/**
 * Servlet implementation class TimerServlet
 */
@WebServlet(loadOnStartup=1,urlPatterns={"/timerServlet"})
public class TimerServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		new Timer(1000,new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println(new Date());
			}
		}).start();
	}
}