错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT - Heroku
Posted
技术标签:
【中文标题】错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT - Heroku【英文标题】:Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch - Heroku 【发布时间】:2016-03-08 02:51:26 【问题描述】:我正在尝试在 heroku 上部署我的服务器。我收到了这个错误:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
这是我的 Java 类:
package introsde.document.endpoint;
import javax.xml.ws.Endpoint;
import introsde.assignment.soap.PeopleImpl;
public class PeoplePublisher
public static String SERVER_URL = "http://localhost";
public static String PORT = "6902";
public static String BASE_URL = "/ws/people";
public static String getEndpointURL()
return SERVER_URL+":"+PORT+BASE_URL;
public static void main(String[] args)
String endpointUrl = getEndpointURL();
System.out.println("Starting People Service...");
System.out.println("--> Published at = "+endpointUrl);
Endpoint.publish(endpointUrl, new PeopleImpl());
我该如何解决这个问题?
谢谢
【问题讨论】:
【参考方案1】:为自己尝试了一切。 @fortellao 的回答对我来说是救命稻草。如果有人像我一样使用 src/main/resources/application.yml,只需添加一点:
app:
server:
port: $PORT
port: 5000 在我的情况下成功了。
【讨论】:
【参考方案2】:您可能在没有等待服务器完成运行的情况下发出请求,因此它中断,因为无法在 90 秒之前完成构建。
这是一个猜测。
【讨论】:
【参考方案3】:由于您的这不是 Spring Boot 应用程序,您应该执行以下操作:
package introsde.document.endpoint;
import javax.xml.ws.Endpoint;
import introsde.assignment.soap.PeopleImpl;
public class PeoplePublisher
public static String SERVER_URL = "http://localhost";
public String port;
public static String BASE_URL = "/ws/people";
public static String getEndpointURL()
return SERVER_URL+":"+port+BASE_URL;
public static void main(String[] args)
port = Integer.valueOf(args[0]);
String endpointUrl = getEndpointURL();
System.out.println("Starting People Service...");
System.out.println("--> Published at = "+endpointUrl);
Endpoint.publish(endpointUrl, new PeopleImpl());
然后在你的 Procfile 上:
web: java $JAVA_OPTS -jar target/*.jar $PORT
这样您就可以将您的套接字绑定到 Heroku 期望您监听的端口。
【讨论】:
【参考方案4】:当 Heroku 找不到 Procfile 中指定的端口时会出现此问题。
解决这个问题的一个简单方法是通过 Procfile 动态设置端口。
添加Procfile ->
web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/nome_do_meu_app.jar
记住,Maven 打包应该是 JAR。
【讨论】:
【参考方案5】:简单的解决方案:
web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/myapi-1.0.0.jar
将myapi-1.0.0
替换为您的jar 名称或使用*
注意: 变量的顺序很重要。例如:以下不起作用。
web: java $JAVA_OPTS -Dserver.port=$PORT -jar target/myapi-1.0.0.jar
【讨论】:
实际上后者对我有用。有什么可能的解释吗? java $JAVA_OPTS -Dserver.port=$PORT -jar 目标/*.jar @nayak 多年来可能有所改变。我的回答在 2018 年有效。【参考方案6】:我在端口绑定方面遇到了同样的问题。然后我找到了this 很棒的文章,在那里我了解了在 Heroku 上部署时一切实际上是如何工作的。读完之后,我设法在 2 分钟内解决了我的问题。链接已失效,但找到存档链接here。
【讨论】:
这确实是一篇很棒的文章。它也解决了我的问题,即对于 Tomcat,您需要将-Dserver.port=$PORT
添加到您的 Procfile 以使 Tomcat 绑定到 Heroku 指定的端口。
很遗憾链接失效了。【参考方案7】:
另外,我想添加以下内容到 Procfile,允许我将我的 Spring Boot 应用程序部署到 Heroku 并解决您上面描述的异常:
worker: java $JAVA_OPTS -jar target/myTargetJar-SNAPSHOT.jar
网络上列出的所有解决方案都没有帮助我解决问题,这就是为什么我决定在这里发布对我有帮助的解决方案。不过,也许它不准时:)
【讨论】:
我已将“web: java -Dserver.port=$PORT -jar target/dependency/webapp-runner.jar target/*.war”更改为“worker: java -Dserver.port=$ PORT -jar target/dependency/webapp-runner.jar target/*.war”在我的电脑“heroku local web”上运行命令并得到消息“[WARN] required key 'web' doesn't Exist in Procfile Definition”跨度> 您还应该在项目的根目录中添加一个 Procfile,其内容如下: web: java $JAVA_OPTS -jar target/myTargetJar-SNAPSHOT.jar -Dserver.port=$PORT【参考方案8】:我在尝试创建最小的 spring-boot 应用程序时遇到了同样的问题。我已经将 heroku 的 java-getting-started 实现与我的进行了比较,发现了这个很好的修复。 只需将其添加到 src/main/resources/application.properties
server.port=$PORT:5000
【讨论】:
经过几个小时的尖叫和喊叫后,我找到了这篇文章,它挽救了我的理智。谢谢! 确保不要将端口用作 5000,最好使用您的应用程序默认使用的端口,例如8080 我尝试了很多解决方案,最终这个解决方案对我有用。【参考方案9】:您必须绑定到 Heroku 指定为环境变量 $PORT
和主机 0.0.0.0
的端口。因此,您应该更改代码以包含以下内容:
public static String PORT = System.getenv("PORT");
SERVER_URL
部分可能更棘手。您可以使用 0.0.0.0,但如果您确实需要可公开访问的 URL,则需要设置如下内容(将“yourappname”更改为您的应用名称):
$ heroku config:set SERVER_URL="https://yourappname.herokuapp.com"
然后添加代码:
public static String SERVER_URL = System.getenv("SERVER_URL");
【讨论】:
您对“0.0.0.0”主机的建议非常好。它帮助我终于启动了我的服务器模块:) 谢谢以上是关于错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT - Heroku的主要内容,如果未能解决你的问题,请参考以下文章
错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT - HEROKU ERROR
Java Maven 项目 - 错误 R10(启动超时)-> Web 进程未能在启动后 90 秒内绑定到 $PORT
Heroku discord bot 托管错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT
Heroku Node.js 错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT
错误 R10(启动超时)-> Web 进程未能在启动后 90 秒内绑定到 $PORT(Heroku 上的 Java Discord 机器人)