在共享 Web 主机上连续运行 Java 应用程序

use*_*725 2 java web-hosting

如果这是一个明显的问题,我深表歉意,但可以说我有一个 Java 应用程序,它不断查询雅虎财经 API 以获取当前股票报价。我可以存储这个程序并让它在共享的 Web 托管服务器上持续运行,而无需与客户端(我的桌面)持续通信吗?我需要在我的托管空间中安装 JVM 吗?

除此之外,该应用程序是否能够像在台式计算机上运行一样创建文本和写入文本文件?通过这种方式,我可以每天查询应用程序一次以下载文本文件,而不必担心程序占用我计算机的 RAM。

最后,有没有办法确定我的应用程序使用了多少 RAM,因为我的网络主机只提供 x 数量的 RAM。

如果您可以提供任何文献,使我需要了解有关该主题的一般数据,我将不胜感激。

Dav*_*ann 5

我可以存储这个程序并让它在共享的 Web 托管服务器上持续运行,而无需与客户端(我的桌面)持续通信吗?

如果这是一个 web 应用程序并且他们正在运行类似 Tomcat 的东西(我认为 AWS Elastic Beanstalk 或多或少是这样),那么是的。只需确保load-on-startup在部署描述符 (web.xml) 中标记过滤器或 servlet ,然后安排 API 调用应该很容易。我会ScheduledExecutorService为此开始。Java Web应用程序与 PHP、Python 和 Perl 通常的运行方式不同,它更像是应用程序中的代码在 Web 服务器的整个生命周期内都处于活动状态,而不仅仅是请求的生命周期,因此单个实​​例将为webapp 部署的生命周期。设置在init()(如线程)中的资源在关闭之前甚至不会被 GC。线程甚至可能不会被 GC(提示:不要忽略该destroy()方法。

我需要在我的托管空间中安装 JVM 吗?

哦,好吧,如果你有“托管空间”,你可以做你想做的事,那么为什么还要担心这是“网络托管”而不仅仅是租用服务器呢?实际上有两种托管方式:一种为您提供虚拟机/物理机,您可以随心所欲(想想 EC2),另一种则让您可以无限制地访问一些以 P 开头的脚本语言、带有 cgi-bin 的 Apache ,也许是 modphp 和一个您控制有限的托管 MySQL 实例。

除此之外,该应用程序是否能够像在台式计算机上运行一样创建文本和写入文本文件?通过这种方式,我可以每天查询应用程序一次以下载文本文件,而不必担心程序占用我计算机的 RAM。

也许。调查一下File.createTempFile()。或者将您的数据存储在 DB 中,然后在收到请求时将其重新具体化为 CSV 或其他格式/give-me-my-data。但实际上,内存非常便宜,而且这种数据压缩得很好,我不确定我会担心还没完成。

最后,有没有办法确定我的应用程序使用了多少 RAM,因为我的网络主机只提供 x 数量的 RAM。

Runtime.getRuntime().*memory()