Server Sent Event JAX-RS

di il
5 risposte

Server Sent Event JAX-RS

Ciao ragazzi,

sto provando ad integrare SSE, ma sia Sse che SseEventSink sono null.

Sapete aiutarmi ?

@Stateless
@Path("sse-check")
public class SSECheckResource {

    @GET
    @Path("ping")
    @Produces(MediaType.SERVER_SENT_EVENTS)
    public void ping(@Context Sse sse, @Context SseEventSink eventSink) {
          OutboundSseEvent sseEvent = sse.newEventBuilder()
                        .name("ping")
                        .id(String.valueOf(lastEventId))
                        .mediaType(MediaType.APPLICATION_JSON_TYPE)
                        .data(Map.class, new HashMap<String, Integer>() {{
                            put("ping", new Integer(0));
                        }})
                        .reconnectDelay(3000)
                        .comment("test")
                        .build();
          eventSink.send(sseEvent);
          eventSink.close();
    }    
}

5 Risposte

  • Re: Server Sent Event JAX-RS

    firej ha scritto:


    sto provando ad integrare SSE, ma sia Sse che SseEventSink sono null.
    Dovresti anche chiarire meglio il contesto. Stiamo parlando di una applicazione JavaEE tradizionale deployata su un servlet container/application server ..... o è fatta con uno dei framework moderni basati su MicroProfile (che comprende JAX-RS appunto) tipo Quarkus oppure Helidon?

    Il punto è che SSE è disponibile in maniera standard e ufficiale in JAX-RS solo a partire dalla versione 2.1 con la introduzione di un nuovo package apposito javax.ws.rs.sse).
    Prima di JAX-RS 2.1 il supporto a SSE era assolutamente opzionale e soprattutto dipendeva da ciascuna implementazione di JAX-RS. Ad esempio Jersey aveva fatto una sua implementazione custom di SSE che era, tra l'altro, un po' più "rocambolesca" da usare.

    Quindi dovresti dire innanzitutto in che contesto sei, quali dipendenze stai usando (se hai un pom.xml di Maven, mostra le dependency), quale implementazione di JAX-RS c'è in ballo ecc.... Senza queste informazioni .. potrei solo tirare ad indovinare ....
  • Re: Server Sent Event JAX-RS

    andbin ha scritto:


    firej ha scritto:


    sto provando ad integrare SSE, ma sia Sse che SseEventSink sono null.
    Dovresti anche chiarire meglio il contesto. Stiamo parlando di una applicazione JavaEE tradizionale deployata su un servlet container/application server ..... o è fatta con uno dei framework moderni basati su MicroProfile (che comprende JAX-RS appunto) tipo Quarkus oppure Helidon?

    Il punto è che SSE è disponibile in maniera standard e ufficiale in JAX-RS solo a partire dalla versione 2.1 con la introduzione di un nuovo package apposito javax.ws.rs.sse).
    Prima di JAX-RS 2.1 il supporto a SSE era assolutamente opzionale e soprattutto dipendeva da ciascuna implementazione di JAX-RS. Ad esempio Jersey aveva fatto una sua implementazione custom di SSE che era, tra l'altro, un po' più "rocambolesca" da usare.

    Quindi dovresti dire innanzitutto in che contesto sei, quali dipendenze stai usando (se hai un pom.xml di Maven, mostra le dependency), quale implementazione di JAX-RS c'è in ballo ecc.... Senza queste informazioni .. potrei solo tirare ad indovinare ....
    Grazie mille per la risposta.

    Attualmente ho Weblogic 12.2 con Java EE7 e JAX-RS 2.0
  • Re: Server Sent Event JAX-RS

    firej ha scritto:


    Attualmente ho Weblogic 12.2 con Java EE7 e JAX-RS 2.0
    Più o meno quello che supponevo, stai usando JAX-RS di versione inferiore alla 2.1. Anche se la tua classe linka con la API 2.1 di JAX-RS, comunque non ti funzionerebbe lo stesso.

    Come dice ad esempio qui: In 12.2.1, WebLogic Server supports the Jersey 2.21 (JAX-RS 2.0 RI).

    Quindi c'è Jersey ma appunto supporta solo JAX-RS 2.0. Le possibilità sono diverse:
    - verificare se si può aggiornare Jersey in quella tua installazione di WebLogic
    - cambiare proprio versione di WebLogic
    - provare ad usare la implementazione custom di SSE fatta da Jersey
  • Re: Server Sent Event JAX-RS

    Grazie mille, gentilissimo. Hai un esempio di implentazione custom di SSE con Jersey?
  • Re: Server Sent Event JAX-RS

    firej ha scritto:


    Grazie mille, gentilissimo. Hai un esempio di implentazione custom di SSE con Jersey?
    Documentazione/esempi sulla user guide ufficiale (Jersey 2.21): https://eclipse-ee4j.github.io/jersey.github.io/documentation/2.21/user-guide.html#sse
Devi accedere o registrarti per scrivere nel forum
5 risposte