Dropwizard и Jersey SSE (серверные события)
Кто-нибудь использовал эту функцию в Джерси SSE уже в приложении Dropwizard? Я пробовал это с 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 .......
Аутентификация и авторизация также выполняются, как здесь, с помощью SecurityContext. Я попробовал также очень простое приложение без аутентификации / авторизации, и есть та же проблема. Возможно, мне нужно зарегистрировать SSE, но я не знаю, как, если это решит мою проблему, потому что в документации Джерси сказано, что существует автоматическая регистрация начиная с версии 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 ответ
Это действительно странная проблема. Не знаю, почему это работает сейчас. Возможно, если у других есть такая же проблема, я сделал это:
environment.jersey().register(new EventOutputMesssageBodyWriter());
MsgBodyWriter не записывает (метод writeTo пуст), но он работает. Действительно странно...