Почему jboss видит пустой список <Object>от веб-службы Coldfusion, который возвращает массив структур? - PullRequest
2 голосов
/ 14 августа 2010

У меня есть веб-служба coldfusion 8, которая возвращает массив

<cffunction access="remote" name="testMethod" returntype="array">
    <cfset myArray = ArrayNew(1)>
    <cfset myArray[1] = "Steve">
    <cfreturn myArray/>
</cffunction>

Я использую сообщество jboss 5.1 GA с Jbossws 3.2.2.GA, использующее сервис.Заглушки строятся с осью 1.4

VerityService_Service locator = new VerityService_Service(verityServiceURL, new QName("http://webservices", "verityService"));      
ChunkedEncodingFeature feature = new ChunkedEncodingFeature(false);
VerityService verityService = locator.getVerityServiceCfc(feature);
List<Object> helloWorld = verityService.testMethod();

, если я вызову это со страницы Coldfusion, я получу хороший массив.Если я вызываю его из моего java-кода, работающего на сервере jboss, он возвращает: [[testMethodReturn: null]]

Я использовал wireshark и прослушал протокол http и получил пакет XML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<testMethodResponse xmlns="http://webservices">
<testMethodReturn>
 <testMethodReturn xsi:type="xsd:string">Steve</testMethodReturn>
</testMethodReturn>
</testMethodResponse>
</soapenv:Body>
</soapenv:Envelope>

AОчень похожий, но немного более полезный веб-сервис работает отлично с jboss 4.0.2 уже несколько лет, и мы только что перешли на jboss 5.1, и это происходит.

Любой, у кого есть похожая проблема

Ответы [ 2 ]

0 голосов
/ 15 августа 2010

Я изменил веб-сервис Coldfusion, чтобы он возвращал тип запроса, а не массив. Затем сгенерированная заглушка вернула DocumentQueryBean. Этот объект был заполнен вызовом веб-службы, где не было массива. Я не знаю, почему библиотеки jbossws не обрабатывают XML, возвращаемый, когда служба возвращает массив. Wsdl указывает, что запрос возвращает тип tns1: DocumentQueryBean, а массив возвращает тип xsd: anyType.

Хотя я не решил эту проблему, я согласен с изменением и буду использовать его вместо этого.

0 голосов
/ 14 августа 2010

Просто выстрел в темноте - но не следует ли хранить результат в Array, а не List?

т.е.

Array<Object> helloWorld = verityService.testMethod();

Просто мысль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...