2016-05-30 4 views
0

は、私はデータベーススキーマを作成し、SQLファイルからデータを挿入開始ちょうど春ブーツWebアプリケーションの起動後とJPAの前に外部APIとのユーレカクライアントを使用して通信する必要がある状況があります。ユーレカクライアントと春ORM

問題はユーレカクライアントは、アプリケーションのコンテキストが開始されたとJPAはすでに働いて、その仕事を終えた後、意味smartlifecycleフェーズ0、でユーレカサーバへの登録開始です。

jpaが作業を開始したり、作業をフェーズ1に遅らせるにはどうすればいいですか?

+1

サンプルプロジェクトは、本当に私たちは、より詳細にあなたの問題を理解するのに役立ちます。 –

+0

なぜですか?なぜサービスが始まる前に通信する必要がありますか?あなたがする必要があるほど重要なことは何ですか?また、サービスの登録と検索は異なることを忘れないでください! –

+0

@ M.Deinum:Eureka Clientは、apisが返された場合はtrue、アプリケーションが実行され、スキーマを作成してデータを挿入する場合はfalseを返します。例外が発生し、アプリケーションは実行されません。 これはシナリオなので、解決策がありますか? – AdrY

答えて

0

私は同じ問題に直面していましたが、私はこれを見つけましたSO question

基本的に、あなただけのstart()にあなたの通信ロジックを配置する必要があります。

public class EurekaClientService implements SmartLifecycle { 

    @Autowired 
    private EurekaClient eurekaClient; 

    private volatile boolean isRunning = false; 

    @Override 
    public boolean isAutoStartup() { 
     return true; 
    } 

    @Override 
    public void stop(Runnable r) { 
     isRunning = false; 
    } 

    @Override 
    public void start() { 
     eurekaClient.customService(); 
     isRunning = true; 
    } 

    @Override 
    public void stop() { 
     isRunning = false; 
    } 

    @Override 
    public boolean isRunning() { 
     return isRunning; 
    } 

    @Override 
    public int getPhase() { 
     return 1; 
    } 
} 

・ホープ、このヘルプ

関連する問題