错误R10(引导超时) - > Web进程在启动后60秒内无法绑定到$ PORT - Heroku

Joe*_*Joe 7 java soap heroku

我正在尝试在heroku上部署我的服务器.我收到了这个错误:

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Run Code Online (Sandbox Code Playgroud)

这是我的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());
}
}
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

谢谢

小智 28

尝试创建一个最小的spring-boot应用程序时遇到了同样的问题.我已经将heroku的java-getting-started实现与我的比较,并找到了这个很好的修复.只需将其添加到src/main/resources/application.properties即可

server.port=${PORT:5000}
Run Code Online (Sandbox Code Playgroud)

  • 经过几个小时的尖叫和喊叫后,我找到了这篇文章,它拯救了我的理智。谢谢你! (3认同)

小智 6

我在端口绑定方面遇到了同样的问题。然后,我找到了这篇很棒的文章,在其中我了解了在Heroku上进行部署时实际上一切工作的原理。阅读后,我设法在2分钟内解决了我的问题。该链接已失效,但请在此处找到已存档的链接。

  • 那确实是一篇很棒的文章。它也解决了我的问题,对于Tomcat,您需要在Procfile中添加`-Dserver.port = $ PORT`,以使Tomcat绑定到Heroku指定的端口。 (2认同)
  • 不幸的是,链接已死。 (2认同)

cod*_*ger 5

$PORT您必须绑定到 Heroku 分配给您作为 env var和 host 的端口0.0.0.0。因此,您应该更改代码以包含以下内容:

public static String PORT = System.getenv("PORT");
Run Code Online (Sandbox Code Playgroud)

SERVER_URL部分可能比较棘手。您可以使用 0.0.0.0,但如果您确实需要可公开访问的 URL,则需要进行如下设置(将“yourappname”更改为您的应用程序名称):

$ heroku config:set SERVER_URL="https://yourappname.herokuapp.com"
Run Code Online (Sandbox Code Playgroud)

然后添加代码:

public static String SERVER_URL = System.getenv("SERVER_URL");
Run Code Online (Sandbox Code Playgroud)


bin*_*iam 5

简单的解决方案:

web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/myapi-1.0.0.jar
Run Code Online (Sandbox Code Playgroud)

替换myapi-1.0.0为您的 jar 名称或使用*

注意:变量的顺序很重要。例如:以下不起作用。

web: java $JAVA_OPTS -Dserver.port=$PORT -jar target/myapi-1.0.0.jar
Run Code Online (Sandbox Code Playgroud)