我将我的cron.xml和backends.xml配置为在google app引擎上运行,如下所示:
cron.xml
<cronentries>
<cron>
<url>/_ah/start</url>
<schedule>every 5 minutes</schedule>
<target>updatebackend</target>
</cron>
</cronentries>
backends.xml
<backends>
<backend name="updatebackend">
<class>B1</class>
<options>
<dynamic>true</dynamic>
<public>false</public>
</options>
</backend>
</backends>
然后在我的web.xml文件中,我写了如下:
的web.xml
<servlet>
<servlet-name>update</servlet-name>
<servlet-class>com.test.UpdateBackendServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>update</servlet-name>
<url-pattern>/_ah/start</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>mybackend</web-resource-name>
<url-pattern>/_ah/start</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
但是当我在谷歌应用引擎上部署并运行它时,它总是运行两次。我的问题是:
感谢。
答案 0 :(得分:0)
实际上,您不能使用/_ah/start
作为请求的处理程序 - 它是为了启动后端实例而保留的。您应该使用不同的处理程序。例如:
<url>/update</url>
<url-pattern>/update</url-pattern>
现在,当您致电/update
时,App Engine将使用现有的后端实例,或者它将自动发出/_ah/start
以启动新实例。您不需要自己致电/_ah/start
,除非您想在发送任何其他请求之前启动您的实例。