You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "Tom Quarendon (JIRA)" <ji...@apache.org> on 2018/11/26 08:21:00 UTC
[jira] [Commented] (ARIES-1867) ContainerResponseFilter not fired
for SSE endpoint
[ https://issues.apache.org/jira/browse/ARIES-1867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16698603#comment-16698603 ]
Tom Quarendon commented on ARIES-1867:
--------------------------------------
I have other cases where the CORS filter isn't being bound. It appears to be that if the resource method has a void return type that the CORS filter (ContainerResponseFilter) isn't processed in the chain, so the response doesn't include the required CORS headers.
I'll create a plain CXF example and see if that also has the same behaviour.
> 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
> Priority: Major
>
> 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)