Статьи

МОКСИ и JSON с обивкой

JSON с отступом — это механизм связи, используемый в JavaScript для преодоления ограничений из-за той же политики происхождения (для получения дополнительной информации см .: http://en.wikipedia.org/wiki/JSONP ). В этой статье я покажу, как использовать JSON с отступами при использовании MOXy в качестве вашего JSON-провайдера.

Эта функциональность является новой в EclipseLink 2.5.0 (и 2.4.2), вы можете попробовать ее сегодня, используя ночную сборку, доступную по адресу:

Веб-приложение (foo.html)

Данные, которые мы запрашиваем (чтобы заполнить
div с
id = «message» ) через HTTP, поступают с другого сервера, чем тот, на котором размещено наше приложение. Мы будем использовать JSON с отступами для получения данных. Ответ от URL будет вызовом нашей
функции
foo . Мы предоставим имя функции через
параметр запроса
обратного вызова .

Ниже приведен ответ от выполнения HTTP-вызова. Посмотрите, как данные JSON обернуты в вызов нашей
функции
foo .

Служба RESTful (FooResource)

Ниже приведен сервис RESTful, реализованный с помощью JAX-RS. Наш
метод
GET возвращает экземпляр класса
MOXy JSONWithPadding, параметризованный с классом домена
Foo . При создании экземпляра этого класса мы присваиваем ему имя функции обратного вызова (по умолчанию это
обратный вызов ) и экземпляр класса домена. Мы будем использовать имя функции обратного вызова из параметров запроса, если оно было предоставлено.

Модель Java (Foo)

Ниже приведена модель Java, которую мы будем использовать для этого примера.

package org.example.padding;
 
public class Foo {
 
    private String bar;
 
    public String getBar() {
        return bar;
    }
 
    public void setBar(String bar) {
        this.bar = bar;
    }
 
}

Обработка приложения / x-javascript Media Type (MyProvider)

Из-за ошибки (см .: 
http://bugs.eclipse.org/404927 ), которую мы исправим в EclipseLink 2.5.1, вам нужно будет создать подкласс
MOXyJsonProvider для переопределения
@Produces и
метода
isWritable , чтобы использовать JSON с отступом.

Дальнейшее чтение
Если вам понравился этот пост, вас также могут заинтересовать: