我创建了一个与Firebase连接的Java服务器。该服务器用于侦听Firebase的更改并相应地更新数据库。为了使它一直运行,我在我的主要功能中添加了CountDownLatch,这是我的代码。
CountDownLatch latch = new CountDownLatch(1);
while (true)
{
nextGamesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
nextGames = snapshot;
setNextGame(nextGames);
}
@Override
public void onCancelled(DatabaseError error) {
System.out.println(error.toString());
System.out.println("3");
}
});
latch.await();
}
我正在共享上面的代码,因为我是Java的新手,并且如果有更好的方法可以真正地提出建议。
说到重点。我已经将整个项目打包到一个jar文件中,并将该文件部署在我的Aws ec2实例上。一切运行正常,除了我总是需要从个人PC调用此类。我希望此文件能够独立运行,而无需从外部系统调用它。我看过tomcat,但是它可以用于HTTP请求,或者让我知道我对tomcat的理解是否正确。
问题是。我如何一直在实例上运行一次这个Jar。
答案 0 :(得分:1)
部署到AWS是一个非常广泛的主题,涉及ASG和负载平衡以实现高可用性,可伸缩性和容错能力。 Jenkins / Terraform / Docker / Packer for CICD。
但是,为了回答您的问题,请使用Ec2实例的“用户数据”功能并指定要运行的命令。在用户数据中提及该命令将确保启动Ec2时该命令运行。
例如,
java -cp /home/ec2-user/App.jar com.test.MySampleClass
假设:Ec2实例中已经有App.jar。
如果它是Web应用程序,则可以部署到tomcat。再次使用Ec2用户数据功能,并提到一堆命令来下载tomcat并启动它。