Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在没有登录和cli的情况下,如何在Aws ec2上运行.Jar文件?_Java_Tomcat_Amazon Ec2 - Fatal编程技术网

Java 在没有登录和cli的情况下,如何在Aws ec2上运行.Jar文件?

Java 在没有登录和cli的情况下,如何在Aws ec2上运行.Jar文件?,java,tomcat,amazon-ec2,Java,Tomcat,Amazon Ec2,我已经创建了一个与firebase连接的java服务器。此服务器用于侦听firebase更改并相应地更新数据库。为了让它一直运行,我在主函数中添加了CountDownLatch,下面是我的代码 CountDownLatch latch = new CountDownLatch(1); while (true) { nextGamesRef.addValueEventListener(new ValueEventListener() {

我已经创建了一个与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文件中,并将该文件部署到我的AWSEC2实例上。一切都运行良好,除了我总是需要从我的个人电脑调用这个类。我希望这个文件自己运行,而不需要从外部系统调用它。我已经看过tomcat,但它可以在HTTP请求上工作,或者如果我对tomcat的理解不正确,请告诉我


所以问题是。如何在我的实例上始终运行一次这个Jar。

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

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

比如说,

java -cp /home/ec2-user/App.jar com.test.MySampleClass
假设:App.jar已经在Ec2实例中可用


如果它是一个web应用程序,那么您可以部署到tomcat。再次使用Ec2用户数据特性,并提及下载并启动tomcat的一系列命令

我正试图使用此命令运行我的文件,但它不起作用/bin/bashjava-jar/home/ubuntu/javaServer/fileName.jar。我已经在AWS的用户数据中添加了这个。我还遗漏了什么吗?当你说它不起作用时,你是什么意思。。您是否手动运行它以查看发生了什么?您还可以检查/var/log/cloud-init-output.log。此日志文件捕获用户数据脚本的执行情况。刚刚使用此链接修复了它。基本上,用户数据只在第一次启动时起作用,为了使它在每次服务器从停止状态启动时起作用,您必须使用mime多部分文件配置用户数据脚本和cloud init指令。