Java GWT cron作业未运行
我正在创建一个小的web应用程序。我有一个cron任务,从数据库中存储的数据定期发送电子邮件。但是,我认为cron作业根本没有运行 文件在这里。 cron.xmlJava GWT cron作业未运行,java,google-app-engine,gwt,cron,Java,Google App Engine,Gwt,Cron,我正在创建一个小的web应用程序。我有一个cron任务,从数据库中存储的数据定期发送电子邮件。但是,我认为cron作业根本没有运行 文件在这里。 cron.xml /cron/MailingServlet 把你的Cron工作描述放在这里 每1分钟 web.xml <servlet> <servlet-name>mailingService</servlet-name> <servlet-class>com.peter.from.
/cron/MailingServlet
把你的Cron工作描述放在这里
每1分钟
web.xml
<servlet>
<servlet-name>mailingService</servlet-name>
<servlet-class>com.peter.from.cron.MailingServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mailingService</servlet-name>
<url-pattern>/cron/MailingServlet</url-pattern>
</servlet-mapping>
</cronentries>
邮寄服务
com.peter.from.cron.MailingServlet
邮寄服务
/cron/MailingServlet
还有MailingServlet.java
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
_logger.info("CRON EXECUTED");
List<Note> notes = new ArrayList<Note>();
PersistenceManager pm = PMF.getPersistenceManager();
long now = System.currentTimeMillis();
Query q = pm.newQuery(Note.class);
q.setFilter("currentTime >= scheduledTime");
q.declareParameters("long currentTime");
try{
notes = (List<Note>) q.execute(now);
for(Note n: notes){
this.mail(n.getEmail(), n.getMessage());
pm.deletePersistent(n);
}
}catch(Exception e){
_logger.info(e.getLocalizedMessage());
}
}
@覆盖
公共无效数据集(HttpServletRequest请求、HttpServletResponse响应){
_logger.info(“CRON已执行”);
列表注释=新建ArrayList();
PersistenceManager pm=PMF.getPersistenceManager();
long now=System.currentTimeMillis();
Query q=pm.newQuery(Note.class);
q、 setFilter(“currentTime>=scheduledTime”);
q、 申报参数(“长当前时间”);
试一试{
注释=(列表)q.execute(现在);
用于(注n:注){
this.mail(n.getEmail(),n.getMessage());
pm.deletepsistent(n);
}
}捕获(例外e){
_info(例如getLocalizedMessage());
}
}
非常感谢您的帮助。如果cron启动,您将在日志中看到它,是否有任何帮助?cron作业是否列在仪表板的cron部分?它列在仪表板中,在日志中有许多条目
2014-05-21 10:23:27.936/cron/MailingServlet 200 8ms 0kb AppEngine Google;(+http://code.google.com/appengine)module=默认版本=10.1.0.1---[21/May/2014:10:23:27-0700]“GET/cron/MailingServlet HTTP/1.1”200 0-“AppEngine Google(+http://code.google.com/appengine)“来自.appspot.com”ms=8 cpu_ms=41队列_name=_crontask_name=7bdbb6e6079794063fc7b417d96c1085 app_engine_release=1.9.5 instance=00C61B17CB5C40E76CA8EE8DDF811FFBE8EC846
,因此cron作业正在启动,并且正在运行并返回状态200。看来一切都很好。这意味着,如果电子邮件没有被发送,要么你的代码没有发送它们,要么它们没有被传递。您是否尝试过直接调用“/cron/MailingServlet”?
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
_logger.info("CRON EXECUTED");
List<Note> notes = new ArrayList<Note>();
PersistenceManager pm = PMF.getPersistenceManager();
long now = System.currentTimeMillis();
Query q = pm.newQuery(Note.class);
q.setFilter("currentTime >= scheduledTime");
q.declareParameters("long currentTime");
try{
notes = (List<Note>) q.execute(now);
for(Note n: notes){
this.mail(n.getEmail(), n.getMessage());
pm.deletePersistent(n);
}
}catch(Exception e){
_logger.info(e.getLocalizedMessage());
}
}