2016-08-09 19 views
0

私はSpring起動アプリケーションを再起動しようとしていますので、Spring起動/終了エンドポイントはcurlを使用していますが、アプリ内からJavaコードは、私はこのコードを試してみたが、働いていない:それは例外がスローされますにもかかわらず、Javaの関数を使用してSpring起動からSpring起動/終了エンドポイントを再起動する

@Autowired 
private RestartEndpoint restartEndpoint; 

... 

Thread restartThread = new Thread(() -> restartEndpoint.restart()); 
restartThread.setDaemon(false); 
restartThread.start(); 

それは動作します:

Thread thread = new Thread(new Runnable() { 
    @Override 
    public void run() { 
     RestartEndpoint p = new RestartEndpoint(); 
     p.invoke(); 
    } 
}); 
thread.setDaemon(false); 
thread.start(); 

答えて

9

あなたはRestartEndPointを注入する必要がありますこれがメモリリークにつながる可能性があることを通知する:

Webアプリケーション[xyx]が [スレッド6]という名前のスレッドを開始したように見えますが、停止できませんでした。これは、メモリリーク を作成する可能性が非常に高いです。スレッドのスタックトレース:この質問/答えの将来のリーダーに

  • 注意、RestartEndPointspring-boot-actuatorに含まれていない場合、あなたはspring-cloud-context依存関係を追加する必要があります。
+0

ありがとう、私は注射を逃した。 – geogeek

関連する問題