java - 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);
}
}
解决方案
我在这里的回答可能是相关的 - Google Cloud App Engine cron 作业 - 不调用服务
基本上,你可能需要这个appengine-web.xml
:
<service>beta</service>
您在您的<target>
指定cron.xml
必须与<service>
您在您的appengine-web.xml
推荐阅读
- ruby-on-rails - 将 wkhtmltopdf 与 Rails 一起使用时从 S3 检索许多 SVG 图像时出现 UnknownNetworkError
- java - 点燃工厂
被忽略 - django - ConnectionResetError:[Errno 54] Django 中的对等方重置连接
- typescript - 如何在类中包含构造函数签名?
- docker - 如何从 mariadb 中的 SHOW MASTER STATUS 检索“位置”的值
- python - 将值更改为每组的最大值
- sql - Postgres 3表加入嵌套数组
- java - 在从 CardView 生成位图之前,如何从 CardView 中删除按钮视图?
- html - 回复邮件签名
- matlab - matlab:为什么我会收到这个错误?无效的表达式。调用函数或索引变量时,请使用括号