繁体   English   中英

Heroku嵌入式Jetty端口绑定超时

[英]Heroku embedded Jetty port binding timeout

我正在尝试使用嵌入式Jetty创建小型Web服务器。 我使用Maven的阴影插件将其构建到“ uberjar”中。 这是我的Startup类的主要功能:

BasicConfigurator.configure();

logger.info("Starting server");

URI baseUri = UriBuilder.fromUri("http://localhost").port(8080).build();
ResourceConfig config = new ResourceConfig(WindowAction.class);
Server server = JettyHttpContainerFactory.createServer(baseUri, config);

server.start();
server.join();
logger.info("Server started");

到目前为止,它在本地有效。 我能够在本地独立构建和运行服务器:

java -jar target/server-0.jar

服务器将请求响应到localhost:8080。 真棒。 当我跑步时:

heroku local web

同样,服务器响应很好。 但是,当我将其推送到Heroku远程服务器时,出现端口绑定超时错误:

2017-08-08 22:12:52.396:INFO:oejs.Server:main: jetty-9.2.z-SNAPSHOT
2017-08-08T22:12:52.464157+00:00 app[web.1]: 2017-08-08 22:12:52.460:INFO:oejs.ServerConnector:main: Started ServerConnector@5890e879{HTTP/1.1}{0.0.0.0:8080}
2017-08-08T22:12:52.464414+00:00 app[web.1]: 2017-08-08 22:12:52.464:INFO:oejs.Server:main: Started @2891ms
2017-08-08T22:14:17.656011+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch
2017-08-08T22:14:17.656011+00:00 heroku[web.1]: Stopping process with SIGKILL
2017-08-08T22:14:17.792987+00:00 heroku[web.1]: Process exited with status 137
2017-08-08T22:14:17.810279+00:00 heroku[web.1]: State changed from starting to crashed

我尝试将端口放在Procfile中的java的命令行参数中,如下所示:

$JAVA_OPTS -Dserver.port=$PORT -jar target/myserver.jar

我还尝试在运行时获取服务器端口:

System.getenv("port")

计算结果为空字符串。 也许Heroku不想被告知嵌入式服务器将使用“ localhost”,但是JettyHttpContainerFactory.createServer需要URI。 谁能指出我要让他们表现出色的正确方法?

env var PORT是全部大写:

System.getenv("PORT")

这是一个完整的例子: https : //github.com/kissaten/java-minimal/blob/master/src/main/java/Main.java#L63

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM