2015-11-11 4 views
1

Кто-нибудь использовал этот Jersey SSE feature уже в приложении Dropwizard? Я попробовал его с DW 0.9.1, но все, что я получаю это исключение при запуске:Dropwizard и Jersey SSE (события на стороне сервера)

[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, но я не знаю, как это решить мою проблему, потому что в документации Джерси есть автоматическая регистрация с версии 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. 
... 

Кто-нибудь знает, как решить эту проблему или есть какие-то идеи?

+0

Теперь он работает. Я сделал это: environment.jersey(). Register (new EventOutputMesssageBodyWriter()); MsgBodyWriter не пишет, но он работает. – heaphach

+0

Просьба представить этот комментарий как ответ и пометить его, поэтому эту ветку можно считать закрытой. Таким образом, решение будет эффективно использоваться для других. – alkis

ответ

0

Это действительно странная проблема. Не знаю, почему это работает сейчас. Возможно, если у других есть такая же проблема, я сделал это:

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

MsgBodyWriter делает не написать (метод WriteTo пуст), но она работает. Действительно странно ...

Смежные вопросы