8 WebLogic Serverでのサーバー送信イベントの使用

Oracle WebLogic Serverでは、Jersey 2.xライブラリの統合によってサーバー送信イベントをサポートします。Jersey 2.xライブラリにより、JSR 370 (JAX-RS 2.1: Java API for RESTful Web Services)の参照実装(RI)が提供されます。

サーバー送信イベント(SSE)の概要

サーバー送信イベントを使用すると、標準のHTTPまたはHTTPSを経由した一方向のクライアント/サーバー接続を使用して、サーバーがWebページにデータをプッシュできるようになります。サーバー送信イベント通信モデルでは、ブラウザ・クライアントは初期接続を確立し、サーバーはデータを提供してクライアントに送信します。 サーバー送信イベントの一般的な情報は、『Server-Sent Events W3C Candidate Recommendation』を参照してください。

サーバー送信イベントはHTML 5仕様の一部で、この仕様にはWebSocketテクノロジも含まれています。どちらの通信モデルでもサーバーがクライアントにデータを一方的に送信できるようになります。しかし、サーバー送信イベントではサーバーからクライアントへの一方向通信を確立しますが、WebSocket接続では双方向の全二重通信チャネルをサーバーとクライアント間に提供し、双方向通信によるユーザーとの対話を図ります。WebSocketテクノロジとサーバー送信イベント・テクノロジには、次の主な相違点があります。

  • サーバー送信イベントではクライアントにデータをプッシュすることのみ可能ですが、WebSocketテクノロジではクライアントに対してデータの送信と受信の両方が可能です。

  • サーバー送信イベント通信モデルは単純であればあるほどサーバーのみの更新に適合しますが、WebSocketテクノロジにはサーバーのみの更新用に追加のプログラミングが必要です。

  • サーバー送信イベントは標準のHTTP経由で送信されるため、機能するために特別なプロトコルやサーバー実装は必要ありません。WebSocketテクノロジでは、HTTP接続をWebSocket接続に正常にアップグレードするために、サーバーがWebSocketプロトコルを理解する必要があります。

WebSocketテクノロジの詳細は、Oracle WebLogic Serverアプリケーションの開発WebLogic ServerでのWebSocketプロトコルの使用を参照してください。

サーバー送信イベントの使用

サーバー送信イベントは、標準HTTPプロトコルを介してクライアントに非同期に通知をプッシュする場合に使用します。

JAX-RS 2.1以降、サーバー送信イベントAPIはjavax.ws.rs.sseパッケージに定義されます。このパッケージには、サーバー送信イベントのために、SseSseEventSinkSseEventSseBroadcasterおよびSseEventSourceのインタフェースが含まれます。

サーバー送信イベントのサーバーAPIは、接続を受け入れて、1つ以上のクライアントにイベントを送信するために使用されます。サーバー側では、インタフェースSseEventSinkを実装するインスタンスが、単一のクライアントHTTP接続に対応します。

SseBroadcasterインタフェースを使用して、複数のクライアントに同時にイベントを送信するようにアプリケーションを構成することもできます。このインタフェースを使用すれば、登録されているすべてのイベント出力にイベントを送信できます。

クライアント側では、インタフェースSseEventSourceを使用して、リソースの場所で構成されているWeb Targetへの接続を開きます。クライアントは、メディア・タイプtext/event-streamをAcceptヘッダーで使用して、サーバー送信イベント接続を開くようにリクエストする必要があります。確立された接続は永続的であり、サーバーから複数のイベントを送信するために再利用できます。

WebLogicサーバー送信イベントAPIの理解

WebLogic Serverでは、Jersey 2.xの統合によりサーバー送信イベントがサポートされています。Jersey 2.xを介したサーバー送信イベントの使用は、JAX-RSリソースでのみサポートされます。

JAX-RS 2.1以降、サーバー送信イベントAPIはjavax.ws.rs.sseパッケージに定義されます。このパッケージには、サーバー送信イベントのために、SseSseEventSinkSseEventSseBroadcasterおよびSseEventSourceのインタフェースが含まれます。

Jersey 2.xでのサーバー送信イベントの詳細は、『Jersey 2.29 User Guide』「Server-Sent Events (SSE) Support」を参照してください。

WebLogic Serverサーバー送信イベントAPIは、パッケージorg.glassfish.jersey.media.sseにあります。このパッケージに含まれるインタフェースおよびクラスの詳細は、『Java EE 8 API Documentation』javax.ws.rs.sseのAPIの説明を参照してください。

サーバー送信イベント用のサンプル・アプリケーション

サーバー送信イベント用のサンプル・アプリケーションは、Jerseyプロジェクトから入手できます。次の場所を参照してください。