blob: 4850875f286f627242cee3bf76d92e7c6a733f09 [file] [log] [blame]
[//]: # " Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. "
[//]: # " "
[//]: # " This program and the accompanying materials are made available under the "
[//]: # " terms of the Eclipse Distribution License v. 1.0, which is available at "
[//]: # " http://www.eclipse.org/org/documents/edl-v10.php. "
[//]: # " "
[//]: # " SPDX-License-Identifier: BSD-3-Clause "
SSE Item Store Jersey Example
=============================
An example demonstrating how Server Sent Events (SSE) Jersey support can
be used to notify clients about changes in server-side managed data
(collection of items). The example also outlines how SSE events can be
consumed using javascript browser-based clients.
Contents
--------
The example consists of a web-based client application and a server-side
application deployed on a [Jetty servlet container](http://www.eclipse.org/jetty/documentation/current/).
The server side part of the application consists of a JAX-RS resource
managing collection of string items and a simple HTML page that includes
a browser SSE client written in Javascript as well as a basic CSS
stylesheet. The SSE Javascript client connects to the JAX-RS resource
and transforms the streamed messages into HTML code that is rendered by
the browser. The javascript client also demonstrates how named and
unnamed SSE events are handled by HTML5 `EventSource` component. The
mapping of the URI path space of the server-side part of the application
is presented in the following table:
URI path | Resource class | HTTP methods
------------------------------- | ------------------- | --------------
**_/resources/items_** | ItemStoreResource | GET, POST
**_/resources/items/events_** | ItemStoreResource | GET (SSE)
Application is configured to run using Jetty maven plugin under base
path `sse-item-store-webapp`.
Running the Example
-------------------
> mvn clean compile jetty:run
The command above deploys the current example. After successful
deployment, you should be able to access the browser SSE client page at
<http://localhost:8080/sse-item-store-jersey-webapp/index.html>. To see the raw
SSE event stream, you may also point your browser directly at the
[`ItemStoreResource`](http://localhost:8080/sse-item-store-jersey-webapp/resources/items/events).
Deploying the example to another servlet container.
---------------------------------------------------
> mvn clean package
The command above creates a Servlet 3.x compliant WAR located in the
target directory. The WAR can be then deployed to your Servlet 3.x
compliant container.
Running Test Client
-------------------
After deploying the application into a Servlet 3.x compliant container,
you can run the attached test by executing:
> mvn test -Djersey.config.test.container.factory=org.glassfish.jersey.test.external.ExternalTestContainerFactory -Djersey.config.test.container.port=<port>