Dropwizard 和 Jersey SSE(服务器端事件)
Dropwizard and Jersey SSE (Server side 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 完成。我也尝试了一个非常简单的没有 authentication/authorization 的应用程序,但也有同样的问题。也许我必须注册 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.
...
有谁知道如何解决这个问题或有什么想法吗?
这真是一个奇怪的问题。不知道为什么它现在有效。也许如果其他人有同样的问题,我是这样做的:
environment.jersey().register(new EventOutputMesssageBodyWriter());
MsgBodyWriter 不写入(writeTo 方法为空),但它可以工作。真奇怪...
有人在 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 完成。我也尝试了一个非常简单的没有 authentication/authorization 的应用程序,但也有同样的问题。也许我必须注册 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.
...
有谁知道如何解决这个问题或有什么想法吗?
这真是一个奇怪的问题。不知道为什么它现在有效。也许如果其他人有同样的问题,我是这样做的:
environment.jersey().register(new EventOutputMesssageBodyWriter());
MsgBodyWriter 不写入(writeTo 方法为空),但它可以工作。真奇怪...