2017-08-08 12 views
0

埋め込みJettyを使用して小さなWebサーバーを作成しようとしています。私はmaven用のshadeプラグインを使って "uberjar"にビルドします。これは私のスタートアップクラスの主な機能です:Heroku埋め込みJettyポートバインドタイムアウト

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 [email protected]{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が必要であると言われるのは好きではないかもしれません。誰かが彼らを素敵にする適切な方法を教えてくれますか?

答えて

関連する問題