8 WebLogic Serverでのサーバー送信イベントの使用
サーバー送信イベント(SSE)の概要
サーバー送信イベントは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
パッケージに定義されます。このパッケージには、サーバー送信イベントのために、Sse
、SseEventSink
、SseEvent
、SseBroadcaster
およびSseEventSource
のインタフェースが含まれます。
サーバー送信イベントのサーバーAPIは、接続を受け入れて、1つ以上のクライアントにイベントを送信するために使用されます。サーバー側では、インタフェースSseEventSink
を実装するインスタンスが、単一のクライアントHTTP接続に対応します。
SseBroadcaster
インタフェースを使用して、複数のクライアントに同時にイベントを送信するようにアプリケーションを構成することもできます。このインタフェースを使用すれば、登録されているすべてのイベント出力にイベントを送信できます。
クライアント側では、インタフェースSseEventSource
を使用して、リソースの場所で構成されているWeb Target
への接続を開きます。クライアントは、メディア・タイプtext/event-stream
をAcceptヘッダーで使用して、サーバー送信イベント接続を開くようにリクエストする必要があります。確立された接続は永続的であり、サーバーから複数のイベントを送信するために再利用できます。
WebLogicサーバー送信イベントAPIの理解
JAX-RS 2.1以降、サーバー送信イベントAPIはjavax.ws.rs.sse
パッケージに定義されます。このパッケージには、サーバー送信イベントのために、Sse
、SseEventSink
、SseEvent
、SseBroadcaster
および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の説明を参照してください。