在服务器上不断运行java应用程序

我希望在服务器上不断运行java应用程序。 我有sevlets的经验,但他们不经常运行。 通过研究我发现这个问题的共同解决方案是使用第三方计时服务; 当我编写自己复杂的计时机制时,我对使用其中一个犹豫不决。

该应用程序需要全天候运行; 我很困惑为什么人们不经常遇到这个问题 – 我做的事情是愚蠢的吗?

问题似乎是“如何让我的程序全天候运行?” 答案是:

1.)让您的计算机全天候运行并让程序运行。

2.)将您的程序放在像www.digitalocean.com这样的东西上,每月5美元,然后让程序运行。 就像你的电脑一样。

William Falcon已经对此进行了描述,有许多云主机。

要扩展它,只需将MyProgramThatRunsForever.jar复制到远程服务器,然后在后台运行它,就像这样。 它将运行并运行和运行,无论它做什么……

如果你问一个不同的问题,你会得到更好的答案。 我,其中一个,不知道你为什么要这样做,并认为这是一个好主意。

看到:

XY问题,有时被称为精神障碍,导致大量浪费的时间和精力,无论是寻求帮助的人还是提供帮助的人。 它经常是这样的:

 User wants to do X. User doesn't know how to do X, but thinks they can fumble their way to a solution if they can just manage to do Y. User doesn't know how to do Y either. User asks for help with Y. Others try to help user with Y, but are confused because Y seems like a strange problem to want to solve. After much interaction and wasted time, it finally becomes clear that the user really wants help with X, and that Y wasn't even a suitable solution for X. 

XyProblem

http://mywiki.wooledge.org/XyProblem

使用云主机。 例如,您可以使用amazon aws创建一个免费的ec2实例。 这些被称为微实例。 然后你可以在机器上安装java并运行你想要的任何东西。

  1. 创建一个Amazon aws帐户
  2. 创建一个新的EC2实例
  3. 选择操作系统(使用ubuntu / linux)
  4. 启动实例
  5. ssh进入EC2实例
  6. 安装java
  7. 做你想做的。 你基本上是一个全新的Linux计算机

我强烈推荐OpenShift。 它提供免费的云,支持Java和J2EE应用程序容器和服务器(tomcat,JBoss,Jetty ……)。 您可以在那里部署您的应用程序并使用许多准备好的模块,如cron,maven,……您可以设置Jenkins …

我用它近两年用于开发目的。

最好的解决方案可能是重构需要不断运行到新应用程序的应用程序部分,从命令行(或cron)运行它并使用某种IPC与Servlet进行通信。

话虽这么说,你可能正在做“一些愚蠢的事”。 Servlet建立在连接上,实际上整个Internet建立在连接的概念之上。 我无法想象你需要运行的任何类型的网络相关任务,无论是否有连接。 如果它是某种后台服务,它们通常与管理任务相关并作为shell脚本实现。 如果您必须使用Java,请参阅上面的段落,但不要尝试将其开发为Servlet并部署在servlet容器中。 这绝对是错误的道路。

 You can use Openshift cloud host. 1. Create an Openshift account. https://openshift.redhat.com 2. Enable applications you need in your project. (JBOSS , Tomcat , MySQL etc) 3. Install Client tools to enable remote access to the cloud server. Follow steps in below wiki. https://www.openshift.com/developers/rhc-client-tools-install 4. Follow this wiki to create public and private keys. https://www.openshift.com/developers/remote-access 5. Connect to your server and deploy the build. 

从您的其他问题,您似乎已经知道如何做到这一点:

部署到AWS Elastic Beanstalk

Elastic Beanstalk服务器是Eclipse WTP服务器,具有用于重新启动,发布和终止Java Web应用程序的附加function。 Eclipse中的Elastic Beanstalk服务器代表AWS Elastic Beanstalk环境。 环境是AWS平台上应用程序的运行实例。 定义您的服务器

在部署应用程序之前,您必须定义服务器并配置应用程序。

定义Java Web应用程序服务器

 In Eclipse, right-click your Java web project in the Project Explorer view. Select Amazon Web Services, and click Deploy to AWS 

Elastic Beanstalk。

 In the Run On Server wizard, select Manually define a new server. 

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Java.sdlc.html#create_deploy_Java.sdlc.create.deploy

看看这个样本:

  @Override public void init(ServletConfig config) throws ServletException { super.init(config); getServletContext().log("init() called"); count = 0; } 

http://en.wikipedia.org/wiki/Java_Servlet#Example

只需将您的代码放入init方法,即可运行并运行并运行。 就像是:

 MyInfiniteLoopProject loop = new MyInfiniteLoopProject(); loop.countToInfinity(); 

然后,在MyInfiniteLoopProject类中,添加以下方法:

 public void countToInfinity(){ int x=0; while(true){ x++; System.out.println(x); } } 

并检查你的日志……

(好吧,取决于System.out去哪里,也许使用记录器)