如何在 Azure 上从后端自动执行对 Tomcat/Java 应用程序的用户操作?

How to automate user actions on Tomcat/Java application from backend, on Azure?

我在 Azure PaaS (Tomcat) 上有一个应用程序 运行ning 使用 Java、JSP 和 Azure SQL 数据库。

用户使用 Web 浏览器登录到应用程序,然后可以 运行 一份报告,其中涉及使用 java (i) 从数据库中提取数据,(ii) 处理数据 (iii) ) 使用 Apache POI 创建 Excel 文件。

如何从后端在日常流程中自动执行此流程?

这是我目前的想法。

  1. 我不喜欢使用 Azure 逻辑应用程序作为完整的解决方案,因为我需要访问创建报告的应用程序中的 java 代码。

  2. 我可以将生成报告的代码复制并粘贴到 Azure 函数中,然后使用 Azure 逻辑应用程序自动执行此代码,但复制代码显然很混乱。

  3. 我可以在另一台机器上使用某种自动化测试工具(例如 Selenium,或者自己编写)运行ning 来登录系统并提取报告,但是这也不太可靠,需要一台单独的机器。我更愿意在后端执行此操作。

  4. 在 Java 中创建一个 servlet 以在不登录的情况下执行报表,然后通过 Azure 逻辑应用程序调用它。 (并阻止 servlet public 互联网访问)

有人有好的解决方案吗?

使用像 quartz 库这样的调度程序。如果您现在开始编写应用程序,我会说使用 spring 引导。 (有多个优点,在 Prod 中的 5 种武器中使用它,都 运行 很好。在持久性和网络层中进行了优化)

Spring 也使用石英。反正quartz的使用方法有很多种,但基本上你代码的一个方法都会被它按指定的date/time/频率调用。就像每天早上 8 点一次。该函数可以触发创建报告、ftp、通过电子邮件发送报告和其他后端任务的任务。

不要使用 selenium ...不是满足此要求的正确工具。