首页 > 解决方案 > Google 应用引擎 没有与此 URL 匹配的处理程序

问题描述

我将从我在谷歌应用程序引擎上设置的 cron 作业调用 firebase Http 请求。cron 作业已成功部署,但它没有触发 firebase url,因为我认为我在 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);
    }
}

这是我的记录器信息 在此处输入图像描述

标签: javagoogle-app-enginecrongoogle-cloud-platform

解决方案


我在这里的回答可能是相关的 - Google Cloud App Engine cron 作业 - 不调用服务

基本上,你可能需要这个appengine-web.xml

<service>beta</service>

您在您的<target>指定cron.xml必须与<service>您在您的appengine-web.xml


推荐阅读