Java 谷歌云应用引擎cron作业-不调用服务
我已经成功地将Cron作业部署到appengine,用于使用appengine标准环境的Java应用程序。它成功部署,但是cron作业失败,当我检查日志时,它没有调用正确的服务:Java 谷歌云应用引擎cron作业-不调用服务,java,google-app-engine,google-cloud-platform,cron,Java,Google App Engine,Google Cloud Platform,Cron,我已经成功地将Cron作业部署到appengine,用于使用appengine标准环境的Java应用程序。它成功部署,但是cron作业失败,当我检查日志时,它没有调用正确的服务: "GET /my-app HTTP/1.1" 404 - - "AppEngine-Google; (+http://code.google.com/appengine)" "my-project.appspot.com" 其他正在工作的cron作业如下所示(请注意,最后一部分显示的是服务名称,而不仅仅是项目名称):
"GET /my-app HTTP/1.1" 404 - - "AppEngine-Google; (+http://code.google.com/appengine)"
"my-project.appspot.com"
其他正在工作的cron作业如下所示(请注意,最后一部分显示的是服务名称,而不仅仅是项目名称):
这是我的cron.xml:
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/my-app</url>
<description>my app</description>
<schedule>every 1 minutes from 00:00 to 23:00</schedule>
<timezone>Europe/Paris</timezone>
</cron>
</cronentries>
<?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">
<servlet>
<servlet-name>my-app</servlet-name>
<servlet-class>com.my.package.MyApp</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my-app</servlet-name>
<url-pattern>my-app</url-pattern>
</servlet-mapping>
</web-app>
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
....
<application>my-project</application>
<service>my-app</service>
....
</appengine-web-app>
以及我的appengine web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/my-app</url>
<description>my app</description>
<schedule>every 1 minutes from 00:00 to 23:00</schedule>
<timezone>Europe/Paris</timezone>
</cron>
</cronentries>
<?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">
<servlet>
<servlet-name>my-app</servlet-name>
<servlet-class>com.my.package.MyApp</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my-app</servlet-name>
<url-pattern>my-app</url-pattern>
</servlet-mapping>
</web-app>
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
....
<application>my-project</application>
<service>my-app</service>
....
</appengine-web-app>
....
我的项目
我的应用程序
....
为什么cron作业不调用服务?该服务也已正确部署。Mycron.xml需要与Myappengine web.xml中的
匹配的
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/my-app</url>
<!-- <target> required -->
<target>my-app</target>
<description>my app</description>
<schedule>every 1 minutes from 00:00 to 23:00</schedule>
<timezone>Europe/Paris</timezone>
</cron>
</cronentries>
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
....
<application>my-project</application>
<!-- cron <target> must match service -->
<service>my-app</service>
....
</appengine-web-app>
cron.xml
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/my-app</url>
<!-- <target> required -->
<target>my-app</target>
<description>my app</description>
<schedule>every 1 minutes from 00:00 to 23:00</schedule>
<timezone>Europe/Paris</timezone>
</cron>
</cronentries>
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
....
<application>my-project</application>
<!-- cron <target> must match service -->
<service>my-app</service>
....
</appengine-web-app>
/我的应用程序
我的应用程序
我的应用程序
从00:00到23:00每1分钟
欧洲/巴黎
appengine web.xml
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/my-app</url>
<!-- <target> required -->
<target>my-app</target>
<description>my app</description>
<schedule>every 1 minutes from 00:00 to 23:00</schedule>
<timezone>Europe/Paris</timezone>
</cron>
</cronentries>
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
....
<application>my-project</application>
<!-- cron <target> must match service -->
<service>my-app</service>
....
</appengine-web-app>
....
我的项目
我的应用程序
....
:
以下示例创建每天运行的基本cron作业:
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/tasks/summary</url>
<target>beta</target>
<description>daily summary job</description>
<schedule>every 24 hours</schedule>
</cron>
</cronentries>
/任务/摘要
贝塔
每日总结工作
每24小时
目标规范是可选的,是
服务/版本。如果存在,则目标已预先添加到应用程序的
主机名,导致作业路由到该服务/版本。如果没有
如果指定了目标,则作业将以默认版本运行
为流量配置的服务
我想这就是你的情况。由于您尚未指定
目标
,cron作业将在默认服务上点击/my-app路径。在目标中提及服务名称。谢谢@Rajesh。我刚刚向您介绍了解决方案,但是附加信息很有用-谢谢您的正确答案:)