У нас есть приложение JAX-RS, работающее на Apache TomEE. Мы немного настраиваем поставщика Jettison по умолчанию, чтобы лучше придерживаться соглашений JSON, используемых интерфейсом JavaScript. TomEE позволяет сделать это через свой файл resources.xml:Настройка JSON marhsalling с GlassFish v4
<resources>
<Service id="jettison" class-name="org.apache.cxf.jaxrs.provider.json.JSONProvider">
serializeAsArray = true
dropRootElement = false
arrayKeys = members,roles
supportUnwrapped = true
writeXsiType = false
</Service>
</resources>
Теперь мы мигрируют в GlassFish v4.1, и мы замечаем, что выход JSON отличается от того, что мы имели в TomEE - таким образом, полностью отключающая внешний интерфейс. Я ищу аналогичный механизм для настройки маршаллера JSON в GlassFish. На самом деле, я уже немного stuck с Джерси, МОКСИ, Джексоном, Джеттисон. Как мы узнаем, какой поставщик JSON фактически используется? Как мы его выбираем? Как мы настраиваем поведение?
Приложение является чистым JAX-RS и не использует никакой JSON-процессор напрямую, вместо этого полагаясь на сортировку классов, аннотированных JAXB. Внедрение любых зависимостей, отличных от JavaEE, крайне нежелательно, так как приложение предназначено для переноски по контейнерам (TomEE, GlassFish, в какой-то день WildFly). Предпочтительным является метод Config-file, аналогичный TomEE; также допустим программный путь, но только при сохранении переносимости.
Вывод о 'jersey.config.server.disableMoxyJson' взял меня как день. Наконец, у меня работает мой оператор Gson. Благодаря! –