I know where my problem is, I should make servlet for /_ah/start first.
google app engine cron backend java always give an error
-
25-06-2023 - |
Question
I have a servlet code like this :
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");
}
}
Then I have a web.xml that looks like following :
<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>
Then I have the cron.xml and backend.xml that looks like following :
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>
But when I upload this to app engine server. it always gave me below error message :
/_ah/start java.lang.NullPointerException at com.google.api.client.extensions.appengine.auth.oauth2.AbstractAppEngineAuthorizationCodeServlet.getUserId(AbstractAppEngineAuthorizationCodeServlet.java:92)
How can I run the servlet using cron job on the app engine backend correctly? Is there any setup above that I do wrong?
Thanks.
La solution
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow