Tag: servletcontextlistener

Objectify和TimerTask:没有为此线程注册API环境

我正在尝试设置TimerTask以定期从Google App Engine的dataStore中删除条目。 所以我用Timer设置了一个ServletContextListener 。 在contextInitialized ,我已经注册了我的Objectify类: ObjectifyService.register(Person.class); 但是,当任务实际运行时,它会抱怨没有设置API环境: Exception in thread “Timer-0” java.lang.NullPointerException: No API environment is registered for this thread. at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:80) at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:90) at com.google.appengine.api.datastore.Query.(Query.java:214) at com.google.appengine.api.datastore.Query.(Query.java:143) at com.googlecode.objectify.impl.cmd.QueryImpl.(QueryImpl.java:72) at com.googlecode.objectify.impl.cmd.LoadTypeImpl.createQuery(LoadTypeImpl.java:50) at com.googlecode.objectify.impl.cmd.LoadTypeImpl.filter(LoadTypeImpl.java:58) at myApp.MyServletContextListener$MyTask.run(MyServletContextListener.java:58) at java.util.TimerThread.mainLoop(Timer.java:555) at java.util.TimerThread.run(Timer.java:505) 有任何想法吗? 我已经尝试将注册该类的行更改为ObjectifyService.factory().register(Person.class); 但它似乎没有帮助。

ServletContextListener执行顺序

如何在应用程序初始化时定义ServletContextListener执行的顺序,如果我有多个ServletContextListener,并且其中一些在部署描述符中声明,另一些在注释(@WebListener)中声明?

如何在java中指定的时间延迟后启动一个线程

我已经在ServletContextListener中调用了一个方法作为线程..现在根据我的需要,我必须将线程延迟1分钟,然后开始执行线程中调用的方法,但我无法做到这一点,因为我是非常新的… 这是我的代码…… public class Startup implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent sce) { } public void contextInitialized(ServletContextEvent sce) { // Do your startup work here System.out.println(“Started….”); //captureCDRProcess(); new Thread(new Runnable() { @Override public void run() { captureCDRProcess(); } }).start(); } 请帮帮我..先谢谢..

开始和停止我的Vaadin网络应用程序的钩子?

我怎么知道我的Vaadin 7网络应用程序何时首次启动/启动,所以我可以做一些初始设置工作? 同样,我怎么知道我的网络应用何时结束,关机/退出?