如果这是一个显而易见的问题我很抱歉,但是我可以说我有一个java应用程序不断查询雅虎财务API以获取当前股票报价。我是否可以存储此程序并使其在共享的Web托管服务器上连续运行,而无需与客户端(我的桌面)保持持续通信?我是否需要在我的托管空间中安装JVM?
除此之外,应用程序是否能够像在桌面计算机上运行一样创建文本和写入文本文件?这样我每天可以查询一次应用程序来下载文本文件,而不用担心程序会占用我的计算机内存。
最后,有没有办法确定我的应用程序使用了多少RAM,因为我的Web主机只提供了大量的RAM。
如果您能提供的任何文献可以让我知道有关该主题的一般数据,我将非常感激。
答案 0 :(得分:4)
我是否可以存储此程序并让它在共享的Web托管服务器上连续运行,而无需与客户端(我的桌面)保持持续通信?
如果这是一个webapp并且他们正在运行类似Tomcat的东西(我认为AWS Elastic Beanstalk或多或少),那么是的。只需确保在部署描述符(web.xml)中将过滤器或servlet标记为load-on-startup
,然后调度API调用应该很容易。我从ScheduledExecutorService
开始。 Java webapps与PHP,Python和Perl通常运行的方式不同,更像是 applications ,因为代码在Web服务器的生命周期中是活的,而不仅仅是请求的生命周期,所以单个实例将为webapp部署的生命周期提供一些路径。在init()
中设置的资源(如线程)在关闭之前甚至不会被GC。线程甚至可能没有GCed(提示:不要忽略destroy()
方法。
我是否需要在我的托管空间中安装JVM?
哦,好吧,如果你有“托管空间”,你可以做你想做的事,那么为什么甚至担心这是“网络托管”而不仅仅是租用服务器?实际上有两种托管方式:一种是为您提供虚拟机/物理机,您可以按照自己的需要进行操作(想想EC2),另一种则为您提供对以P开头的几种脚本语言的绝对访问,使用cgi-bin创建Apache ,也许是modphp,以及你受限制的托管MySQL实例。
除此之外,应用程序是否能够像在桌面计算机上运行一样创建文本和写入文本文件?这样我每天可以查询应用程序一次下载文本文件,而不用担心程序占用我的计算机内存。
也许。查看File.createTempFile()
。或者将数据存储在数据库中,并在/give-me-my-data
的请求进入时将其重新标记为CSV或类似内容。但实际上,内存如此便宜,并且此类数据压缩好吧,我不确定我是否会担心它。
最后,有没有办法确定我的应用程序使用了多少RAM,因为我的Web主机只提供了大量的RAM。
Runtime.getRuntime().*memory()