Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > Axis клиент и сложные типы |
Автор: smbd 15.2.2006, 10:35 | ||
Есть у меня веб-сервис. Живет в JBoss'е. Возвращает сложный тип PersonInfo: несколько полей, в том числе массивы. Я не могу в клиенте получить (десериализовать) возвращаемое значение. На сервере всё отрабатывает. А на клиенте - нет. Делаю так:
Получается ошибка - Could not convert org.apache.axis.encoding.ser.ArrayDeserializer$ArrayListExtension to bean field 'documentIDs', type [Lmy.package.DocumentID; - Exception: java.lang.ArrayStoreException: java.lang.String Если убрать registerTypeMapping - Exception: org.xml.sax.SAXException: Deserializing parameter 'getFullPersonReturn': could not find deserializer for type {urn:WebServiceSpeedTest}PersonInfo Если убрать addParameter и setReturnType (или и их, и registerTypeMapping), то будет - Exception: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. Что ещё интересно: .NET клиент всё спокойно отрабатывает. Ещё я нашёл такую ссылочку http://entirex.forums.softwareag.com/viewtopic.php?p=1534&sid=6a9ca65e976cbf56676457747a5455af Там похожая проблема, но товарищ просто галочки ставит где-то (см. последний пост). Может, можно и где-то в объекте Call что-то включить?? Надеюсь, кто-нибудь с этим встречался. А то уже ![]() |
Автор: Slanix 15.2.2006, 12:10 |
А что мешает получить WSDL и сгенерировать stub (WSDL2Java). И потом обращаться к объекту так, как-будто всё локально? см. доку по AXIS. |
Автор: smbd 15.2.2006, 13:11 |
Не хочется много классов. Кстати, сама проблема случайно решилась. WSDL делается не literal, как было, а default. Интересно, а что подставляется вместо default? |