首页 > 解决方案 > 如何在没有登录和 cli 的情况下在 Aws ec2 上运行 .Jar 文件?

问题描述

我创建了一个与 firebase 连接的 java-server。此服务器用于侦听 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 实例上。一切都运行良好,除了我总是需要从我的个人电脑上调用这个类。我希望这个文件自己运行,而不需要从外部系统调用它。我已经查看了 tomcat,但它适用于 HTTP 请求,或者如果我对 tomcat 的理解不正确,请告诉我。

所以问题是。我怎样才能永远在我的实例上运行这个 Jar。

标签: javatomcatamazon-ec2

解决方案


部署到 AWS 是一个非常广泛的主题,涉及 ASG 和负载平衡,以实现高可用性、可扩展性和容错。CICD 的 Jenkins/Terraform/Docker/Packer。

但只是为了回答您的问题,请使用 Ec2 实例的“用户数据”功能并指定您要运行的命令。在用户数据中提及该命令将确保该命令在 Ec2 启动时运行。

例如,

java -cp /home/ec2-user/App.jar com.test.MySampleClass

假设:App.jar 已经在 Ec2 实例中可用。

如果是web应用,可以部署到tomcat。再次使用 Ec2 用户数据功能并提到一堆命令来下载并启动它。


推荐阅读