Механизм приложений Google Нет обработчиков, соответствующих этому URL - PullRequest
0 голосов
/ 29 октября 2018

Я собираюсь вызвать Firebase Http-запрос из задания cron, которое я настроил на google app engine. Задание cron успешно развернуто, но оно не запустило URL-адрес firebase, так как я думаю, что мне не хватает некоторых настроек в файле web.xml или в других файлах. В средстве просмотра журнала я вижу этот тип информации "Ни один обработчик не соответствует этому URL" У любого есть идея. Любой был бы оценен. Ниже приведены мои настройки cron.xml

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
    <cron>
        <url>/cron</url>
        <target>beta</target>
        <description>Keymitt cron job</description>
        <schedule>every 1 minutes</schedule>
    </cron>
</cronentries>

это моя настройка web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>HelloAppEngine</servlet-name>
    <servlet-class>com.company.HelloAppEngine</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloAppEngine</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>KeymittCron</servlet-name>
    <servlet-class>com.company.KeymittCron</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>KeymittCron</servlet-name>
    <url-pattern>/cron</url-pattern>
  </servlet-mapping>

</web-app>

и это мой связанный WebServlet

@WebServlet(name = "KeymittCron",value = "/cron")
public class KeymittCron extends HttpServlet {
    private static final Logger _logger = Logger.getLogger(KeymittCron.class.getName());
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //  super.doGet(req, resp);
        URL url=new URL("httplink");
        HttpURLConnection connection= (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.connect();
        int requestCode=connection.getResponseCode();
        if(requestCode==200){
            _logger.info("firebase link triggered successfully");
            _logger.info("Executed cron job");
        }
        else{
            _logger.info("Error while triggering firebase link");
        }
        connection.disconnect();
        resp.setStatus(200);
        resp.getWriter().println("Done");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //
        doGet(req,resp);
    }
}

А это моя информация в логгере enter image description here

1 Ответ

0 голосов
/ 06 июня 2019

Мой ответ здесь может быть актуален - Задание cron для Google Cloud App Engine - без вызова службы

В принципе вам это может понадобиться в вашем appengine-web.xml:

<service>beta</service>

<target>, указанное в cron.xml, должно соответствовать <service>, определенному в appengine-web.xml

...