Tom Quarendon created ARIES-1867:
------------------------------------

             Summary: ContainerResponseFilter not fired for SSE endpoint
                 Key: ARIES-1867
                 URL: https://issues.apache.org/jira/browse/ARIES-1867
             Project: Aries
          Issue Type: Bug
          Components: jax-rs-whiteboard
            Reporter: Tom Quarendon


I have a resource class such as the following:
{code:java}
@Path("events")
@JaxrsResource
public class EventsResource {

  private Sse sse;
  private SseBroadcaster eventBroadcaster;

  @Context
  public void setSse(Sse sse) {
    this.sse = sse;
    this.eventBroadcaster = sse.newBroadcaster();
  }

  @GET
  @Produces(MediaType.SERVER_SENT_EVENTS)
  public void suscribeToEvents(@Context SseEventSink eventSink) {
    eventBroadcaster.register(eventSink);
  }
}

{code}
 

 

In addition, I have a CORS filter:

 
{code:java}
@Component(immediate=true)
@Provider
@JaxrsExtension
public class CORSFilter implements ContainerResponseFilter {

  @Override
  public void filter(ContainerRequestContext requestContext, 
ContainerResponseContext responseContext) throws IOException {
    System.out.println("CORSFilter for "+requestContext.getUriInfo().getPath());
    MultivaluedMap<String, Object> headers = responseContext.getHeaders();

    headers.add("Access-Control-Allow-Origin", 
requestContext.getHeaderString("Origin"));
    ...

{code}
 

The CORS filter gets fired on all requests as I expect, _except_ for ones to 
the EventResource.subscribeToEvents method. Hence browsers complain when 
receiving SSE events.

This used to work fine with jersey as the JAXRS implementation. CORS filter got 
called for the EventsResource.subscribeToEvents call.

I've no idea whether this is a jaxrs-whiteboard level issue, or a CXF level 
issue. I will try and come up with a plain CXF test of the same thing for 
comparison.

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to