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作业如下所示(请注意,最后一部分显示的是服务名称,而不仅仅是项目名称):

我已经成功地将Cron作业部署到appengine,用于使用appengine标准环境的Java应用程序。它成功部署,但是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。我刚刚向您介绍了解决方案,但是附加信息很有用-谢谢您的正确答案:)