Это проблема 6 из одного, 12/2 для другого - wsdl2java не поддерживает должным образом сложные типы, как, по мнению реализации Microsoft WSDL.
Обсуждение того, является ли это ошибкой Java или MS, бессмысленно.
К сожалению, существует очень мало реализаций SOAP, которые обрабатывают что-либо, кроме примитивных типов, поэтому веб-службы Microsoft отлично подходят для взаимодействия на поверхности, но на самом деле они работают только с прокси-серверами Microsoft.
Для вашего обходного пути у вас есть несколько вариантов:
Придерживайтесь примитивных типов .Net - в основном типы значений + строка. Нет массивов, списков или чего-либо со сложной сериализацией.
Напишите свой собственный HttpHandler
для возврата Xml в формате, который может обрабатывать Java - я фактически сделал что-то подобное при работе с Flex / ActionScript (с той же проблемой).
Переходите на другой формат - ИМХО большая часть Интернета переходит от SOAP к сервисам в стиле REST.
Из них (1) самый простой, но и самый неуклюжий. В результате вы получаете хаки, подобные описанному WDSL методу SOAP, который возвращает строку, но эта строка на самом деле является кодированным XML, который может анализировать потребляющая Java. Юк.
Вы всегда получаете такие забавные вещи при работе на разных платформах: - (