Dropwizard和Jersey SSE(服务器端事件)

时间:2015-11-11 08:57:15

标签: java jersey dropwizard server-sent-events

有没有人在Dropwizard应用程序中使用过这个Jersey SSE feature?我尝试使用DW 0.9.1,但我得到的只是启动时的异常:

[main]: /:?:?- unavailable
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] No injection source found for a parameter of type public org.glassfish.jersey.media.sse.EventOutput .......

身份验证和授权也像here一样使用SecurityContext完成。我还尝试了一个非常简单的无身份验证/授权应用程序,并且存在同样的问题。也许我必须注册SSE,但我不知道如果这解决了我的问题,因为Jersey文档说自版本2.8.x后有自动注册。

我尝试了什么,但没有帮助:

    environment.jersey().register(SseFeature.class);
    environment.jersey().getResourceConfig().register(SseFeature.class);
    System.out.println("sse feature:" + environment.jersey().getResourceConfig().getConfiguration().isRegistered(SseFeature.class));

输出:

...
sse feature:true
WARN  [2015-11-11 10:12:58,845] [main]: org.glassfish.jersey.internal.Errors:?:?- The following warnings have been detected: WARNING: Cannot create new registration for component type class org.glassfish.jersey.media.sse.SseFeature: Existing previous registration found for the type.
...

有谁知道如何解决这个问题或有任何想法?

1 个答案:

答案 0 :(得分:0)

这是一个非常奇怪的问题。不知道为什么它现在有效。也许如果其他人有同样的问题,我就这样做了:

environment.jersey().register(new EventOutputMesssageBodyWriter());

MsgBodyWriter没有写入(writeTo方法为空),但它有效。真奇怪......