axis2: сериализация сгенерированных объектов wsdl2java - PullRequest
0 голосов
/ 09 ноября 2011

Используя утилиту axis2 wsdl2java и сторонний wsdl, я создал служебную заглушку и поддерживающие классы (держатели данных).Поскольку существует необходимость в последующей обработке загруженных данных из службы, необходимо сериализовать один из объектов-носителей данных.

1) существует ли стандартный инструмент / подход axis2, который можно использоватьдля этой цели?

2) поскольку класс держателя данных не реализует интерфейс Serializable, какой будет самый простой способ сериализации объекта в формат xml с возможностью восстановления исходного объекта?

Была использована опция привязки данных (-d jaxbri), и каждое поле рассматриваемого класса помечено тегом @XmlElement, например:

@XmlElement(name = "ID", required = true)
protected String id;

1 Ответ

0 голосов
/ 10 ноября 2011

Хорошо, вот как я это решил:

  1. axis2 сгенерированный набор классов Java (на стороне клиента) имел объект с именем ObjectFactory.Большинство его методов создают объекты JAXBElement со значениями полей держателя класса
  2. Мне пришлось реализовать сериализуемый класс-обертку aSerializable для держателя класса, чтобы он использовал ObjectFactory для создания объектов JAXBElement для всех полей.
  3. некоторый внешний код использует класс-оболочку для создания сериализуемого объекта и записывает его в выходной поток.
  4. на принимающей стороне:

    ASerializable aSerializable;А а;aSerializable = (ASerializable) in.readObject ();a.setID ((String) aSerializable.getID (). getValue ());

  5. все еще выглядит как дополнительная работа для сериализации предварительно аннотированных классов, но лучше, чем сериализация в некоторыетекстовый формат и ручная проверка типов при десериализации.

...