我的問題是:
Google App Engine允許cron作業在拋出DeadlineExceededException之前只有30秒激活。從這個角度來看,我的應用程序不適合Google應用程序引擎平臺,因此需要調用耗時的cron作業。
我想到的一個解決方案是調用另一個Servlet(Servlet2)並讓該Servlet2爲我完成這個工作,Servlet_2將是一個常規的Java Servlet。
爲了達到這個目的,我正在考慮從我的cron作業Servlet_1中創建一個session,調用另一個Servlet_2,測試會話,然後讓服務器完成所需的工作並最終使會話失效。
來自Servlet_1的調用不應該重定向到Servlet_2,因爲這會再次讓我回到方方面面。
現在我的問題:你認爲這會工作?如果是,並且DeadlineExceededException acure,那麼即使我將所有代碼放在Servlet_2的destroy方法中,Servlet_2是否也會停止工作?
我的代碼: 從另一個Java Servlet中激活一個Java Servlet
//Servlet_1
try {
HttpSession session = request.getSession(true);
session.setAttribute("referingPage", "server is calling");
request.getRequestDispatcher("/Servlet_2.do").forward(request, response);
}catch(DeadlineExceededException e) {
e.printStackTrace();
}
//Servlet_2
@Override
public void destroy() {
HttpSession session = request.getSession(true);
String value = (String)session.getAttribute("referringPage");
if(value.equals("server is calling")) {
// Do the time demanding stuff
}
session.invalidate();
}
將是一個答案感謝!