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 пуст), но он работает. Действительно странно...

Другие вопросы по тегам