Java Can';t在非默认服务上的appengine中运行会话清理cron

Java Can';t在非默认服务上的appengine中运行会话清理cron,java,google-app-engine,Java,Google App Engine,我有一个Java web应用程序在应用程序引擎标准上运行 它过去在我的项目中作为默认服务运行,我有一个cron作业来清除旧会话: 我遵循此文档将我的monolith web应用程序拆分为微型服务: 前端和后端都在Java web应用程序中,但现在我正在React.js中开发一个前端,并将该前端作为同一个应用程序引擎项目中的默认服务运行(使用nodejs运行时) java web应用现在只作为后端,所以我将服务设置为:backend 我使用dispatch.yaml文件将/static/pat

我有一个Java web应用程序在应用程序引擎标准上运行

它过去在我的项目中作为默认服务运行,我有一个cron作业来清除旧会话:

我遵循此文档将我的monolith web应用程序拆分为微型服务:

前端和后端都在Java web应用程序中,但现在我正在React.js中开发一个前端,并将该前端作为同一个应用程序引擎项目中的默认服务运行(使用nodejs运行时)

java web应用现在只作为后端,所以我将服务设置为:
backend

我使用dispatch.yaml文件将/static/path指向前端,将所有其他路径指向后端

# Rules for dispatch file...
# Put specific cases at the top, other
dispatch:
# Apart from the react frontend on a custom url.
  - url: "blindepoule.appspot.com/static/*"
    service: default
# Route the rest to the backend
  - url: "blindepoule.appspot.com/*"
    service: backend
这太棒了!但是sessioncleanup cron作业现在失败了:

它直接作用于特定的服务url:

但不是关于:

当查看前端服务的日志服务器时,似乎前端接收到/_ah/sessioncleanup调用并返回404。My dispatch.yaml不会将调用重定向到后端服务

我想添加对dispatch.yaml的显式引用,但文档中说它将忽略,url以“_-ah”开头。我还了解到,您可以在appengine-web.xml文件中指定目标,但必须在其中输入版本。然后每次我更新一个版本时,我都必须更新它(我经常这样做,因为在AppEngine中它非常容易)。在我的例子中,我更愿意指定cron作业需要查看后端服务:

更新:我试图将servlet更改为一个不包含_-ah的路径,将“_-ah”更改为“api”


_A_会话清理
com.google.apphosting.utils.servlet.SessionCleanupServlet
_A_会话清理
/api/会话清理
会话删除
/api/会话清理
即使是在服务的直接url上(以前有效):
可能com.google.apphosting.utils.servlet.SessionCleanupServlet中有一个先决条件,如果404不是来自_ah模式,则抛出404

我想我可以编写自己的servlet来删除记录


有什么想法吗?我的完整来源:

URL路径是为非常特定的处理程序保留的,分派文件规则不适用于它们。From(语法表中的url行):

以/_ah/开头的URL路径不由调度文件路由

事实上,当你使用点地址时,它对你有效,只是因为在这种情况下,你使用的是点地址,而不是点地址


但是,现在您的服务作为后端运行,您是否仍然拥有与您需要清理的基于
\u ah
的专用库兼容的用户会话信息?我想会话信息现在由前端react服务处理…

在我真正开始使用react前端之前需要一段时间。我希望在完成react前端之前保持jsp的工作。
<servlet>
    <servlet-name>_ah_sessioncleanup</servlet-name>
    <servlet-class>com.google.apphosting.utils.servlet.SessionCleanupServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>_ah_sessioncleanup</servlet-name>
    <url-pattern>/api/sessioncleanup</url-pattern>
</servlet-mapping>
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Sessions Removal</web-resource-name>
        <url-pattern>/api/sessioncleanup</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>