我有 C 应用程序将在不同站点的多台计算机上运行。
现在我想控制和监视这些C应用程序。为此,我正在考虑使用 Servlet/JSP 的 Java Web 应用程序。
我认为 C 应用程序将通过 TCP 连接到 Java Web 应用程序。在我的 Web 应用程序中,我正在考虑实现通过 TCP 与 C 应用程序通信的管理器。当 Web 应用程序作为单独的线程启动时,我将启动管理器。管理器将通过 Context 和 Session 与 servlet 请求进行通信。因此,每当用户在浏览器上执行某些操作时,我想在服务器上使用我的管理器的功能,并使用 ServetContext 和 Session 作为接口。
这就是我的想法。所以,我想知道是否有更好的方法,或者我做错了什么?有人可以建议我更好的解决方案吗?
EDIT
当前的工作流程:每当我需要启动/停止 C 应用程序时,我都必须通过 SSH 远程计算机 puTTY 终端,输入长命令,然后启动/停止它。每当出现问题时,我都必须滚动很长很长的日志文件。还有其他一些事情,例如应用程序每秒正在执行/处理所有事情的实时状态,我无法始终将其记录在日志文件中。
所以我发现这些工作流程很困难。我无法监控诸如实时状态之类的事情。
现在我想要一个网络应用程序接口。我可以修改我的 C 应用程序并从头开始实现 Web 应用程序。
要实施的新工作流程:我想从网页启动/停止 C 应用程序。我想在网页上查看日志和实时状态报告/实时图表(监控 C 应用程序正在做什么)。我想在网页上监控机器状态。
我想使用 JSP/servlet 在 Java 中设计 Web 界面。
因此,我将修改我的 C 应用程序,以便它可以与 Web 应用程序进行通信。
问题:
只需要制定新工作流程的指南/最佳实践。
EDIT 2
很抱歉造成混淆控制器 or manager。两者是同一件事。
我的想法:
系统将由运行在不同站点的 C 应用程序、在 Tomcat 服务器中并行运行的 Java 控制器和 Java Web 应用程序以及数据库组成。
1) C 应用程序将通过 TCP 连接到控制器。因此,这里的控制器成为服务器和 C 应用程序客户端。
2) C 应用程序将是多线程的,将从控制器接收任务并生成新线程来执行该任务。当控制器告诉停止任务时,C 应用程序将停止该任务的线程。此外,C 应用程序将发送工作进度(日志)每一秒至控制器。
3)控制器从Web应用程序接收任务命令(两者在Tomcat服务器中并行运行,都在JVM上的同一实例中),并且Web应用程序将通过HTTP接收来自用户的命令。
4)每秒从C应用程序接收到控制器的工作进度(日志),控制器然后将日志插入数据库中以供以后分析(需要考虑MySQL RDBMS中的插入日志是否良好,可能需要进行大量插入,可能是每秒 100 或 1000,永远)。 Web 应用程序还可以从控制器请求最近 5 分钟的日志并通过 HTTP 发送给用户。如果用户正在监视日志,则 Web 应用程序必须每秒从控制器检索日志并通过 HTTP 发送给用户。
5)用户监控C应用程序任务,将在图表中看到每秒更新的进度。另外,C 应用程序中可能偶尔发生的信息/错误事件日志的文本行。
6) C 应用程序将在每台机器上运行,它将执行用户从 Web 浏览器发送的任何任务。 C 应用程序将作为机器中的服务运行,它将在机器启动时启动,将连接到服务器,并将永远保持与服务器的连接。如果没有任务要执行,则可以空闲运行。