Springbootを使用して開発中に開発中に、サービスが開始されるシナリオに対処する必要があることがよくあります。サービスステータスをサービスステータスを変更すると、サービスステータスが変更されると、障害の削除と負荷分散を実行できるようにする必要があります。
登録する2つの方法に遭遇しました。
1. SpringのWebApplicationが開始された直後に登録します。
2。サーブレットコンテナが起動したら、リスナーを介して登録します。
この記事では、デモを使用して、ZKを使用した従来の登録スキームを使用して、これら2つの登録方法を説明しています。
1.スプリングWebApplicationが開始された後に登録します
最初にコードを見てみましょう
@SpringBootApplicationPublic class webApplication {private static final logger logger = loggerfactory.getLogger(webApplication.class);プライベート静的揮発性ブールis_registry = false; public static void main(string [] args){applicationContext Context = run(webApplication.class、args); if(is_registry){logger.info( "レジスタ2:WebApplicationが起動した後"); zkclient zkclient = context.getbean(zkclient.class); zkclient.register(); is_registry = true; logger.info( "登録2:登録が成功しました"); }}}ここでは、webApplicationと登録のZkclientを取得します。
ここでは、ApplicationContextを使用してZkclientの豆を取得することに注意する必要があります。その理由は、すべての構成が読み取られ、beanがWebApplicationの起動時に初期化されるため、WebApplicationの初期化中に自動化された方法でBeanを注入できないためです。初期化が完了する前に豆を注入することはできません。
登録の詳細なコードはここで拡張されません。
2。サーブレットコンテナが初期化されたら、リスナーを介して登録
または、最初にコードを開始します
@weblistenerpublic class registerlistener servletcontextlistener {protected final logger logger = loggerFactory.getLogger(this.getClass());プライベート静的揮発性ブールis_registry = false; @autowired private zkclient zkclient; @Override public void contextInitialized(servletcontextevent servletcontextevent){try {if(!is_registry){ogger.info( "登録1:サーブレットコンテナが正常に開始された後"); zkclient.register(); logger.info( "登録1:登録に登録"); } is_registry = true; } catch(例外e){is_registry = false; logger.info( "登録1:登録失敗"); }} @Override public void contextdestroyed(servletContextEvent servletContextevent){if(is_registry){zkclient.stop(); }}}最初にリスナーを書く必要があります。このリスナーは、servletcontextListenerインターフェイスを実装し、@weblistenerで注釈を付けます。これは、スプリングブートアノテーションリスニング方法です。
サーブレットコンテナが正常に開始された後、リスナーのコンテキスト化されたメソッドが呼び出されます。サーブレット容器が破壊され、サービスを提供できない場合、リスナーのContextDestroyedメソッドが呼び出されます。言い換えれば、このリスナーはサーブレット容器の状態を聞いています。
次に、アプリケーションメインクラスでリスナー構成を開くだけです。
@servletcomponentscan@springbootapplicationpublic class webApplication {}3。これら2つの方法の比較
HTTPプロトコルを外部的に提供するWebサービスの場合、セマンティクスではサーブレットコンテナの登録がより明確になります。ただし、スプリングコンテナが長すぎると、サーブレットの初期化が完了して登録される可能性がありますが、サービスは外部からギャップ時間へのアクセスを提供できないため、通常、最初の方法を使用して登録します。
このシナリオはこのようなものです
サーブレット登録が成功した後、WebApplicationはまだ開始されておらず、この時点でサービスが正常にアクセスを提供できないことがわかります。
ZKでは、両方の登録が成功していることがわかります。
要約します
上記は、編集者がお客様に紹介したSpringboot Registration Service Registration Center(ZK)の詳細な説明です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!