Как создать индивидуальный ответ XML в веб-сервисе на основе Java? - PullRequest
1 голос
/ 12 октября 2011

Я хочу создать веб-сервис в Java с использованием Netbeans 7. У меня есть две сущности Продукт и Категория , аннотированные аннотациями JAXB.Я создал EJB-компоненты с использованием этих классов сущностей и веб-службы productservice с использованием этих EJB-компонентов.Например, метод в классе веб-сервиса

@WebMethod(operationName = "find")
public Product find(@WebParam(name = "id") Long id) {
    Product p = ejbRef.find(id);
    Category c = ejbRef2.find(p.getCategoryId());
    return p;
}

Этот метод возвращает Product, маршалированный в XML.Одним из элементов в XML является categoryId , который ссылается на категорию, к которой он принадлежит.Я хочу сгенерировать XML с cat_id, замененным маршалированной формой объектов Category.Как я могу это сделать?

Ответ SOAP для продукта выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
    <ns2:findResponse xmlns:ns2="http://services/">
        <return>
            <categoryId>1</categoryId>
            <description>Great for reducing mouse populations</description>
            <id>1</id>
            <imageurl>/images/cat1.gif</imageurl>
            <name>Hairy Cat</name>
        </return>
    </ns2:findResponse>
</S:Body>

Ответ SOAP для категории выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
    <ns2:findResponse xmlns:ns2="http://services/">
        <return>
            <description>Loving and finicky friends</description>
            <id>1</id>
            <imageurl>/images/cats_icon.gif</imageurl>
            <name>Cats</name>
        </return>
    </ns2:findResponse>
</S:Body>
</S:Envelope>
...