如何在没有登录和CLI的情况下在AWS ec2上运行.Jar文件?

时间:2019-02-19 11:09:10

标签: java tomcat amazon-ec2

我创建了一个与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。

1 个答案:

答案 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并启动它。