2016-03-28 8 views
0

У меня есть проблема, когда мое приложение получает сообщение об ошибке от сервера MongoDB, например:JacksonDBDecoder - Ошибки сервера из MongoDB - mongojack 2.3.0

Представьте, что я находку в MongoDB, но ответ от MongoDB Сервера ошибка из-за тайм-аута:

{ $ ERR: "MongoTimeout из-за ... бла-бла-бла ..." код: 50 }

JacksonDBDecoder ожидает мой тип Java, например мой класс «Материал» (который содержит несколько полей, таких как «цена» и «вес»), но wh он получает предыдущий JSON, тогда нет никаких соответствующих полей с «ценой» и «весом», поэтому исход пуст: {}

Пустой JSON будет обрабатываться классами mongo-java-drivers (com.mongb.QueryResultIterator.throwOnQueryFailure точно), и он никогда не будет регистрировать исходную информацию «MongoTimeout из-за ... bla bla bla ...» и 50, потому что декодер не смог понять JSON с сервера MongoDB.

Не могли бы вы помочь мне настроить mongojack или Jackson для обработки таких ответов от MongoDB Server?

Большое спасибо.

С уважением, Paco.

ответ

0

После разговора с поддержкой MongoDB, они подтвердили мне следующее:.

«Команда драйвер наши последние комментарии и они считают, что это действительно ошибка драйвера В основном, они думают, что водитель должен обнаружить, что это сбой запроса и использование декодера по умолчанию для декодирования документа ошибки, а не пользовательского декодера, зарегистрированного MongoJack.

Наиболее важной частью является то, что эта ошибка не существует в серии драйверов 3.x. Поэтому наше предложение для вас заключается в обновлении до драйвера 3.2.2 (обратите внимание, что MongoJack перечисляет 3.2 Java-драйвер в качестве его предпочтительной зависимости: http://mongojack.org/dependencies.html). "

Таким образом, это не является проблемой mongojack;)

С уважением, Пако.