2012-06-07 3 views
1

Я использую JBoss AS 7.1.1 и JAX-WS 2.0.Сериализация объектов SOAP в Java

В моем приложении мне нужно передать Map<String, Map<String, String>> на услугу. Я создал настраиваемый сложный тип, который расширяет TreeMap. Во время отладки я подтвердил, что объект, который я пытался отправить, был заполнен данными, но полученный объект был пуст. Из других сообщений, похоже, это потому, что не очень хорошо сочетается с сериализацией SOAP. Есть ли способ реализовать сериализацию SOAP XML для моего объекта без изменения типов, создания тонны полей и т. Д.? Я хочу быть в состоянии к следующему:

public String doSoapXmlSerialization() { 
    // code 
} 
public void doSoapXmlDeserialization() { 
    // code 
} 

Было бы очень простой вопрос для меня, чтобы написать сериализации и десериализации методы. Я также могу представить себе какой-то файл XSD, чтобы позволить SOAP-методам выполнять мою работу для меня. Я не смог найти никаких руководств для этого. По какому механизму JAX-WS пытается сериализовать объекты ?.

+0

ли реализовать сериализации ваш пользовательский тип? Он должен переходить через сеть. – Logan

+0

Мой тип расширяет TreeMap, который реализует сериализуемое. –

+0

Есть ли у вашего сервиса wsdl? Если это так, запустите программу jboss wsconsume на wsdl, сохраненную в виде файла, чтобы увидеть, что она генерирует в качестве кода Java для него. В jboss 5 это было в папке bin jboss. Он возьмет файл wsdl и сгенерирует Java-код для вызова wsdl. Вы должны иметь возможность передавать данные такого типа. Я передал объект карты в качестве ввода, но это было mapmessage для jms. Возможно, посмотрите на мотыгу MapMessage написан для идей. – Logan

ответ

0

Я понял, что раздел (моего WSDL-файла), описывающий объекты отправки и получения, был XML-схемой, а SOAP использует JAXB. Я последовал за this руководством и построил схему. Это позволило мне создать все, что я хотел.

Похожие:

JAXB: how to marshall map into <key>value</key>

Смежные вопросы