2017-02-02 4 views
2

私のSpring/Hibernate/MVCアプリケーションでは、いくつかの長期実行機能を実装しています。この場合、ユーザーにステータスを知らせたいと思います。彼らはバックエンドによって生成されるよう、最小限で、フロントエンドステップ・バイ・ステップに表示されるはずですSpring:ユーザーにログメッセージを表示する方法は?

DEBUG d.t.webapp.services.StageServiceImpl - Fetching result 
DEBUG d.t.webapp.services.StageServiceImpl - loaded 1000 rows 
DEBUG d.t.webapp.services.StageServiceImpl - loaded 1000 rows 
DEBUG d.t.webapp.services.StageServiceImpl - loaded 1000 rows 
DEBUG d.t.webapp.services.StageServiceImpl - loaded 994 rows 

これらのメッセージ:私はフロントエンドに特定のlog4jメッセージを得ることができる場合

は、私のような、不思議ディレイ。それが可能か、この要件のためのより良い解決策がありますか?

答えて

1

それとも、なぜちょうどこのようなものを使用しない:

1位あなたの労働者の最後のステータス

@RestController 
@RequestMapping(value = "/worker") 
public WorkerStatusProviderController { 

    @Autowired 
     WorkerStatusProvider workerStatusProvider; 

    @RequestMapping(value = "/status/{id}", method = RequestMethod.GET) 
    public new ResponseEntity<WorkerStatus> getStatus(@PathVariable("id") long workerId){ 

     //retrieve last worker status 
     WorkerStatus lastStatus = workerStatusProvider.getLastStatus(workerId); 

     //send worker status to front 
     return new ResponseEntity<WorkerStatus>(lastStatus, HttpStatus.OK); 
    } 
} 

2ごとに2このコントローラを呼び出すためのフロントエンドを使用アヤックスで#を提供するためのコントローラを作成します。または3秒間表示し、最後のステータスをユーザーに表示します。

//call /worker/status/id every 2 seconds 
setInterval(function(){ 
    $.get("/worker/status/100", function(workerStatus, status) { 

     //display worker status to the user 
     alert("workerStatus: " + workerStatus); 

    }); 
}, 2000); 
関連する問題