Инструмент веб-сервиса Java, который использует XML вместо аннотаций Jaxb? - PullRequest
1 голос
/ 12 марта 2012

У меня есть сервисный слой, который я хотел бы преобразовать в веб-сервис.Однако я ненавижу использовать аннотации, потому что они сильно ограничивают возможность повторного использования кода в моих общих базовых классах.Некоторые веб-сервисы используют подмножество объектов, и я не хочу, чтобы вещи, выставленные для одного сервиса, были открыты для другого.

У меня была такая же проблема с hibernate, однако сопоставления hbm xml позволяют мне поделитьсяодни и те же доменные объекты и имеют разные сопоставления для разных сервисов, что прекрасно работает.Существует ли какая-либо инфраструктура веб-сервисов отдыха для java, которая позволит мне описывать мои объекты API и схемы с помощью xml и при этом получать преимущества от преобразования этих объектов в json / xml и т. Д.?

Ответы [ 3 ]

0 голосов
/ 12 марта 2012

Spring Web Services - это еще одна среда без аннотаций, основанная на публикации XML для веб-служб. Вам стоит попробовать

0 голосов
/ 12 марта 2012

Примечание: Я EclipseLink JAXB (MOXy) и являюсь членом JAXB 2 (JSR-222) группа экспертов.

EclipseLink JAXB (MOXy) имеет расширение, которое позволяет представлять метаданные в виде файла XML.Вы можете использовать эти метаданные в среде JAX-RS, используя ContextResolver:

package blog.bindingfile.jaxrs;

import java.io.*;
import java.util.*;

import javax.ws.rs.Produces;
import javax.ws.rs.ext.*;
import javax.xml.bind.*;

import org.eclipse.persistence.jaxb.JAXBContextFactory;

import blog.bindingfile.Customer;

@Provider
@Produces({"application/xml", "application/json"})
public class CustomerContextResolver implements ContextResolver<JAXBContext> {

    private JAXBContext jc;

    public CustomerContextResolver() {
        Map<String, Object> props = new HashMap<String, Object>(1);
        props.put(JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY, "blog/bindingfile/binding.xml");
        jc = JAXBContext.newInstance(new Class[] {Customer.class} , props);
    }

    public JAXBContext getContext(Class<?> clazz) {
        if(Customer.class == clazz) {
            return jc;
        }
        return null;
    }

}

Для получения дополнительной информации

Вопросы по переполнению стека

0 голосов
/ 12 марта 2012

Вы можете описать свои веб-сервисы в WADL , основанном на XML, а затем сгенерировать свой код, используя инструмент wadl2java CXF .Обратите внимание, что WADL еще не получил широкого распространения, поэтому вам нужно решить, насколько важно для вас предоставлять услуги REST по контракту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...