@Singleton与Servlet中的@Schedule

时间:2016-01-14 11:06:44

标签: servlets singleton ejb schedule

我正在实现一个@singleton,其中我希望有一个预定的功能。

 @Singleton
 public class MyClass
 {
     static volatile MyClass instance;
     private Map<String, String> myArray = new HashMap<String, String>();
     private MyClass()
     {
     }

     public static MyClass getInstance()
     {
         if (instance == null)
         {
            synchronized (MyClass.class)
            {
                if (instance== null)
                {
                    instance= new MyClass();
                }
            }
        }
        return instance;
     }


    public void setPar( String key, String value)
    {
        this.myArray.put(key, value);
        for (Map.Entry<String, String> entry : this.myArray.entrySet() )
        {
            System.out.println( entry.getKey()+ " ::: " + entry.getValue() );
        }
    }

    @Schedule(second = "*/5", minute="*",hour="*", persistent=true)
    public void doJob()
    {
        System.out.println("*** Hello from scheduled task ***");
    }
}

这是在eclipse中创建的动态Web项目中,并在Tomcat服务器中运行。

因此,当我发出html文件请求时,会执行一个servlet。

@Stateless
public class MyServlet extends HttpServlet
{
    private static final long serialVersionUID = 1L;
    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
        String param1= req.getParameter("param1");
        String param2= req.getParameter("param2");
        MyClass inst= MyClass.getInstance();
        inst.setPar(param1, param2);
    }
}

我想要的是使用@Schedule注释执行doJob()。

我猜测,因为MyClass实例被加载 - 并且通过打印数组值,它确实有效 - doJob()也会按照@Schedule中的描述启动和工作。

项目的任何配置是否有问题?我尝试用this调整但没有改变。我做错了什么?

提前感谢您的帮助。 (我对Java很新,所以要温和一点。)

0 个答案:

没有答案