Как сопоставить сервлет с URL-адресом cron? Этот вопрос вытекает из комментария к ответу в следующем посте: Use Cron jobs with Appengine Endpoints APIКарта сервлета на cron url?
В моем проекте работа хрон называется, как показано в журнале в Google App Engine и URL https://[url-commented-out].appspot.com/_ah/api/stocksApi/v1/stocks выполняется должным образом при тестировании в веб-браузере и возвратов правильное значение.
Но я получаю ошибку 405: HTTP-метод GET не поддерживается этим URL-адресом, когда я пытаюсь запустить его в GAE. Я прочитал https://cloud.google.com/appengine/docs/java/config/cron Мой код в cron.xml файла:
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/_ah/api/stocksApi/v1/stocks</url>
<description>Backend Process Stocks</description>
<schedule>every 1 minutes from 11:10 to 11:30</schedule>
<timezone>America/New_York</timezone>
</cron>
</cronentries>
Моего web.xml является:
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
<servlet>
<servlet-name>SystemServiceServlet</servlet-name>
<servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
<init-param>
<param-name>services</param-name>
<param-value>
[package].StocksEndpoint</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SystemServiceServlet</servlet-name>
<url-pattern>/_ah/spi/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SystemServiceServlet</servlet-name>
<url-pattern>/_ah/api/*</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>cron</web-resource-name>
<url-pattern>/_ah/api/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<filter>
<filter-name>ObjectifyFilter</filter-name>
<filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ObjectifyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Я использую Android Studio и добавил модуль бэкэнда по следующему HelloEndpoints и I имеют файл StocksEndpoint.java с getStocks(); метод, который возвращает акции.