如何在 AWS 上为 运行 将可执行 JAR 构建到 运行 构建 URI

How to construct a URI for running an executable JAR to run on AWS

我正在使用 Jersey 和一个嵌入式容器(在我的例子中 Jdk HTTP)。如何在侦听适当端口的任意服务器上适当地将 Uri 字符串配置为 运行?

public class App {
    static Logger log = LoggerFactory.getLogger(getClass())

    public static void main(String[] args) throws Exception {

        // runs locally
        URI uri = UriBuilder.fromUri("http://localhost/").port(8080).build();

        ResourceConfig config = ResourceConfig(MyStuff.class);
        HttpServer server = JdkHttpServerFactory.createHttpServer(uri, config);

        log.info("App started at ${uri.host}:${uri.port}. Press <enter> to terminate.")

        Reader reader = new InputStreamReader(System.in);
        reader.read();
        server.stop(0);
    }
}

我正在通过创建他们的默认启动器 ElasticBeanstalk 实例来部署到 AWS ElasticBeanstalk。

1) 有没有一种方法可以配置我的 URI,以便它可以在 EB 和本地工作? 2) 如果不是,运行ning 在 EB 上的正确配置是什么?

使用默认设置,http://localhost:5000/ 是正确的 URI/port 到 运行 Elastic Beanstalk 上的独立 Java 应用程序。 EB 实例在每个实例上都有一个 nginx 代理,它接收 HTTP 请求并将它们传递给端口 5000 上的 Java 服务器。

在下面的 AWS 上将代码更正为 运行。端口 5000 是默认端口,但可以覆盖:

URI uri = UriBuilder.fromUri("http://localhost/").port(5000).build();