users@jax-rs-spec.java.net

[jax-rs-spec users] Re: Server-Sent Events API proposal

From: Ondrej Mihályi <ondrej.mihalyi_at_gmail.com>
Date: Fri, 27 Jan 2017 09:14:42 +0100

I'd like to have a look at it, but after investing a lot of time reviewing
the reactive client API, I needed to give JAX-RS a break and continue with
my day job. I hope to have some time in next couple of days, but I would
appreciate if you could wait for comments one week later.

If you need to move forward, I humbly suggest working on another topic
while waiting for feedback on SSE.

Ondrej

2017-01-27 8:55 GMT+01:00 Pavel Bucek <pavel.bucek_at_oracle.com>:

> No commends/feedback?
>
> I understand that the change is not a small one - feel free to ask if you
> need to have something explained in more detail.
>
> Please let me know if someone is planning to look into this topic. Ideally
> by the end of this week (start of the day Monday, CET). If there are no
> comments, we might need to move it forward even without any other input,
> but I don't really want to do that..
>
> Thanks and regards,
> Pavel
>
>
> On 24/01/2017 20:54, Pavel Bucek wrote:
>
> Dear experts,
>
> please allow me to bring up another addition planned to be included in
> JAX-RS 2.1: Support for Server Sent Events.
>
> The API was introduced a while back [1], but we did incorporate some
> changes, mostly alignments with Java SE 8 and another one, slightly more
> controversial - alignment with Java SE 9 Flow API.
>
> Why we should use Flow API? We want to make the transition to Java 9 as
> smooth as possible. Please note that today, the JAX-RS sources do contain
> Flow class (1:1 copy from Java SE 9), but that is NOT a final state. We
> want to work with it as much as possible, but we will minimize and clean up
> the code before final release. How? Consider following example:
>
> public interface SseBroadcaster extends AutoCloseable, Flow.Publisher<OutboundSseEvent> {
> //...
> }
>
> could be modified to
>
> public interface SseBroadcaster extends AutoCloseable {
> //... void subscribe(SseSubscriber<? super OutboundSseEvent> subscriber);
> }
>
> I hope you will like the attempt to be "forward-compatible", but I assume
> that this proposal alone will bring some opinions - please share them! Last
> note: currently, the Flow API is used only in SSE. We plan to use it
> heavily in Non-blocking I/O. If you think there are other areas where we
> can take advantage of Subscriber/Publisher methods, please let us know.
>
> Let me get back to the SSE API.
>
> Very brief description of the API is on the wiki [2], I will expand that
> once we'll have some feedback.
>
> The proposal contains support for server and client side. All classes are
> in the package javax.ws.rs.sse [3]. There is no added class from the last
> proposal, but there are some changes:
>
> - [server] SseBroadcaster extends Publisher<OutboundSseEvent>
> - [server] replaced SseBroadcaster.Listener by SseBroadcaster#onException
> and SseBroadcaster#onClose
> - [server] SseEventOutput extends Subscriber<OutboundSseEvent>
> - [client] SseEventSource extends Publisher<InboundSseEvent>
>
> Corresponding commit [4] looks like a bigger one, but most of it is
> renaming based on introduced interfaces, the core of the change is
> relatively small.
>
> I look forward to your comments and suggestions.
>
> I don't want to prolong this already too long email - please let me know
> if there are some areas which I should describe in more detail.
>
> Thanks and regards,
> Pavel & Santiago
>
> [1] https://java.net/projects/jax-rs-spec/lists/jsr370-experts/
> archive/2015-10/message/28
> [2] https://java.net/projects/jax-rs-spec/pages/ServerSentEvents
> [3] https://github.com/jax-rs/api/tree/master/jaxrs-api/src/
> main/java/javax/ws/rs/sse
> [4] https://github.com/jax-rs/api/commit/b2b8f3f4f20696558a3ff52b0de17f
> b04c343d02
>
>
>