views:

31

answers:

2

I have a coldfusion 8 webservice that returns an array

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

I am using jboss 5.1 GA community with Jbossws 3.2.2.GA consuming the service. The stubs are being built with axis 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();

if I call this from a coldfusion page I get a nice array. If I call it from my java code running on the jboss server it returns: [[testMethodReturn: null]]

I used wireshark and sniffed the http protocol and I get an xml packet:

<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"&gt;
<soapenv:Body>
<testMethodResponse xmlns="http://webservices"&gt;
<testMethodReturn>
 <testMethodReturn xsi:type="xsd:string">Steve</testMethodReturn>
</testMethodReturn>
</testMethodResponse>
</soapenv:Body>
</soapenv:Envelope>

A very similiar but a little more useful webservice has been working fine with jboss 4.0.2 for a few years now and we are just migrating to jboss 5.1 and this is happening.

Anyone have a similiar issue

A: 

Just a shot in the dark here - but shouldn't you be storing the result in an Array rather than a List?

i.e.

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

Just a thought.

Ciaran Archer
the testMehtod is a stub that gets generated and it returns a List<Object> so that is what I used.
SWD
A: 

I changed the Coldfusion webservice to return a query type rather than an array. Then the generated stub returned a DocumentQueryBean. That object was populated by the webservice call where the array was not. I don't know why jbossws libraries don't handle the xml returned when the service returns an array. The wsdl indicates that a query returns the type tns1:DocumentQueryBean and an array returns the type xsd:anyType.

Although I didn't solve this I am ok with the change and will use this instead.

SWD