Что ж, я надеюсь, что еще не так поздно ответить на эту тему, я столкнулся с этой ошибкой несколько часов назад, и в результате получается, что если вы генерируете Java-клиент для оси, например, с помощью eclipse. Это генерирует несколько предложений, в которых создаются a * BindingStub; в этом классе создается метод с именем «createCall ()», этот метод довольно важен, потому что здесь автоматически генерируется код, который устанавливает сопоставление типов для вызова, и с этим Axis знает, как отображать параметры запроса от клиента к услуге.
Я реализовал эту логику в параметре запроса типа Array. И ошибка ушла.
Service service = new Service();
Call _call = (Call) service.createCall();
//
synchronized (this) {
Class<?> clazz = co.development.portals.ws.model.PointSoap[].class;
QName arrayQName = new QName(
"urn:http.service.ws.portals.development.co",
"ArrayOf_tns2_PointSoap"),
objectQName = new QName(
"http://model.ws.portals.development.co",
"PointSoap");;
SerializerFactory serializerFactory = (SerializerFactory)
new ArraySerializerFactory(objectQName, null);
DeserializerFactory deserializerFactory = (DeserializerFactory)
new ArrayDeserializerFactory();
_call.registerTypeMapping(
clazz,
arrayQName,
serializerFactory,
deserializerFactory,
false);
} ..... Other stuff like setting Endpoint, operation, returnType and so on to the _call object.
Действительно, мой сервис получает массив PointSoap.
Примечание: извините за мой английский Jejeje.
С наилучшими пожеланиями,
Harvey