users@jax-rs-spec.java.net

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

From: Pavel Bucek <pavel.bucek_at_oracle.com>
Date: Fri, 27 Jan 2017 09:34:24 +0100

Hi Ondrej,

Thanks for your response.

I'm not sure whether a week is justifiable, but we'll see how other will
react.

We are working on other things, no worries. It's not like we're blocked
by it momentarily, but at some point, the work reaches the state where
it doesn't make sense to continue unless the previous topic is finished.

Have a nice weekend,
Pavel


On 27/01/2017 09:14, Ondrej Mihályi wrote:
> 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
> <mailto: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 SseBroadcasterextends AutoCloseable, Flow.Publisher<OutboundSseEvent> {
>> //...
>> }
>>
>> could be modified to
>>
>> public interface SseBroadcasterextends 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
>> <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
>> <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
>> <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/b2b8f3f4f20696558a3ff52b0de17fb04c343d02
>> <https://github.com/jax-rs/api/commit/b2b8f3f4f20696558a3ff52b0de17fb04c343d02>
>>
>>