【发布时间】:2014-05-12 02:30:03
【问题描述】:
我有一个这样的 servlet 代码:
public class BackendServlet extends HttpServlet {
private static final Logger LOG = Logger.getLogger(BackendServlet.class.getName());
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
LOG.info("just test backend");
}
}
然后我有一个 web.xml,如下所示:
<servlet>
<servlet-name>update</servlet-name>
<servlet-class>com.google.api.test.backend.BackendServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>update</servlet-name>
<url-pattern>/updatebackend</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>update</web-resource-name>
<url-pattern>/updatebackend</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>any</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
然后我有 cron.xml 和 backend.xml 如下所示:
cron.xml
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/updatebackend</url>
<description>Update on the backend</description>
<schedule>every 5 minutes</schedule>
<target>updatebackend</target>
</cron>
</cronentries>
backend.xml
<?xml version="1.0" encoding="UTF-8"?>
<backends>
<backend name="updatebackend">
<class>B1</class>
<options>
<dynamic>true</dynamic>
</options>
</backend>
</backends>
但是当我将它上传到应用引擎服务器时。它总是给我以下错误消息:
/_ah/start java.lang.NullPointerException at com.google.api.client.extensions.appengine.auth.oauth2.AbstractAppEngineAuthorizationCodeServlet.getUserId(AbstractAppEngineAuthorizationCodeServlet.java:92)
如何在应用引擎后端使用 cron 作业正确运行 servlet?上面有没有我做错的设置?
谢谢。
【问题讨论】:
标签: java google-app-engine cron backend