Настройте Apache johnzon для красивой печати в контексте, отличном от OSGI
У меня проблема, когда я хочу настроить, как мое веб-приложение JAXRS возвращает клиентам полезную нагрузку JSON (например, включить красивую печать). Для размещения своего веб-приложения я использую новейшую версию Tomee (apache-tomee-webprofile-8.0.1).
- Томи (http://tomee.apache.org/tomee-8.0/docs/developer/json/index.html) полагается на Apache johnzon для обработки Json (https://johnzon.apache.org/).
- Я могу создать такую простую службу REST (она отлично работает):
@GET
@Produces({"application/json; charset=UTF-8"})
public HealthCheckResponse invokeTestService() {
...
}
- Я могу использовать JAX-Binding-Annotations, когда я хочу иметь специальное форматирование в результирующем JSON, например, я могу использовать JsonbNillable, чтобы указать, возвращаются ли поля как поля JSON, когда они равны нулю или нет:
@javax.json.bind.annotation.JsonbNillable
public class HealthCheckResponse {
...
- Пока все работает нормально и как я и ожидал. Но затем я хотел включить красивую печать для полезной нагрузки JSON, для этого мне нужно настроить Apache Johnzon. Johnzon предоставляет логическое свойство под названием "pretty", которое, по-видимому, является логическим, которое нужно установить в значение true, чтобы в результирующем JSON были разрывы строк и отступы.
- Но я не могу найти способ установить для этого логического свойства значение true. Похоже, что Johnzon использует концепцию OSGI под названием "Администратор конфигурации" для настройки таких свойств, но поскольку мое веб-приложение является обычным веб-приложением JAXRS, размещенным на сервере веб-приложений Tomee, я не могу использовать концепции OSGI для настройки этого.
Я искал решение этой проблемы, но безрезультатно. Даже не заглядывать в исходный код Johnzon действительно помогло. Я предполагаю, что на самом деле нет способа, как такая конфигурация "Администратора конфигурации" работает без OSGI-контейнера, или когда есть способ, как эта концепция отображается в не-OSGI-мире, это довольно неясно, и было бы очень приятно чтобы знать, как это сделать.
Любая помощь приветствуется. Спасибо и Ура, Майкл