2015-10-07 4 views
1

Я пытаюсь настроить ресурсы с поддержкой веб-рассылки, используя Dropwizard и Atmosphere. Я основаны мои настройки на код здесь: https://cvwjensen.wordpress.com/2014/08/02/websockets-in-dropwizard/Принять: приложение/json терпит неудачу с использованием атмосферы с помощью трикотажа с Dropwizard

Я использую следующий код для установки Атмосфера в Dropwizard:

AtmosphereServlet atmosphere = new AtmosphereServlet(); 
atmosphere.framework().addInitParameter(ApplicationConfig.ANNOTATION_PACKAGE, "my.classes"); 
atmosphere.framework().addInitParameter(ApplicationConfig.WEBSOCKET_SUPPORT, "true"); 
atmosphere.framework().addInitParameter(ApplicationConfig.PROPERTY_NATIVE_COMETSUPPORT, "true"); 
atmosphere.framework().addInitParameter(ApplicationConfig.PROPERTY_COMET_SUPPORT, "org.atmosphere.container.Jetty9AsyncSupportWithWebSocket"); 
ServletRegistration.Dynamic servlet = environment.servlets().addServlet("atmosphere", atmosphere); 
servlet.addMapping("/APIWS/*"); 

И ресурс я использую, чтобы проверить это выглядит следующим образом:

@GET 
@Produces({"application/xml", "application/json"}) 
public SuspendResponse<JAXBElement<CustomerListType>> getUpdates(@Context BroadcasterFactory bf) { 
    Broadcaster bc = getBroadcaster(bf, hash); 
    registerBroadcaster(hash, query, apiContext.getUser()); 
    return new SuspendResponse.SuspendResponseBuilder<JAXBElement<CustomerListType>>() 
      .broadcaster(bc) 
      .build(); 
} 

В основном это работает, но если я задаю заголовок Accept: application/json в моем запросе на веб-узел, он терпит неудачу, когда сервер попытается что-то нажать. Установка Accept: application/xml работает нормально.

я проверить его с помощью следующей локон команды:

curl -i -N -H "Accept: application/json" -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-Websocket-Version: 13" -H "Sec-WebSocket-Key: 258E" http://localhost:8080/APIWS/customers 

Как только сервер помещает некоторые данные, он не со следующими сообщениями:

* STATE: PERFORM => DONE handle 0x80048248; line 1617 (connection #0) 
* Curl_done 
* Empty reply from server 
* Connection #0 to host localhost left intact 
curl: (52) Empty reply from server 

ответ

1
+0

Спасибо за ответ Jeanfrancois! Вы имели в виду установку параметра 'org.atmosphere.websocket.messageContentType' init в' application/json'? Я пробовал настройки, но, к сожалению, это не имело значения. – Petter

+2

Включите журнал в TRACE, чтобы узнать, что случилось в Джерси. Я подозреваю, что у Джерси есть проблема с заголовком, поскольку Атмосфера не использует его. – jfarcand

+0

Спасибо! Я установил logging для TRACE во всех задействованных модулях, и оказалось, что на самом деле у одного из наших провайдеров была ошибка. Не знаю, почему исключение появилось только в журнале TRACE, но я рад, что он работает сейчас! :) Спасибо за помощь! – Petter

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

  • Нет связанных вопросов^_^