Howdy --

Troubles in web service country tonight, and I'm being led to believe this is a CFMX 
bug with no known fix...

I'm trying to use CFMX to consume (via cfinvoke) another organization's web service 
which takes a single simple string
input parameter and returns a complex datatype within a complex datatype, and all I'm 
getting for my effort is an
insanely long CF error message which begins:

Could not perform web service invocation "getProtocols" because AxisFault faultCode:
http://xml.apache.org/axis/:Server.userException faultString: 
org.xml.sax.SAXException: Deserializing parameter
'getProtocolsResult': could not find deserializer for type 
http://tempuri.org/:>getProtocolsResponse>getProtocolsResult

This message is being served up by the CFMX Developer Edition on Win2K, version 
6,0,0,48097 according to the CF
Administrator.

The relevant portion of the WSDL for this web service (copied out of IE6 and pasted 
here) is as follows:

- <definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:s="http://www.w3.org/2001/XMLSchema"; xmlns:s0="http://tempuri.org/";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/";
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"; 
targetNamespace="http://tempuri.org/";
xmlns="http://schemas.xmlsoap.org/wsdl/";>
- <types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/";>
- <s:element name="getProtocols">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="cSearch" type="s:string" />
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="getProtocolsResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="getProtocolsResult">
- <s:complexType mixed="true">
- <s:sequence>
  <s:any />
  </s:sequence>
  </s:complexType>
  </s:element>
  </s:sequence>
  </s:complexType>
  </s:element>
  </s:schema>
  </types>

As you can see, getProtocolsResponse, which is what's supposed to be coming back to my 
cfinvoke, is a complex type which
contains another complex type, getProtocolsResult.

Accessed through a different approach (a simple parameterized URL GET interface to the 
target service instead of a SOAP
interface), this is (the first part of) what's coming back (copied out of IE6 and 
pasted here):

- <NewDataSet>
- <protocols>
  <prot_num>011078</prot_num>
  <prot_title>A Phase I Clinical Trial of a New Receptor-Binding Radiopharmaceutical 
for Sentinel Node Detection in
Melanoma</prot_title>
  <pi>Wallace, A.</pi>
  <Prot_accrual_status>2</Prot_accrual_status>
  <Institution>Moores UCSD Cancer Center</Institution>
  <Intitution_zipcode>92093</Intitution_zipcode>
  <Institution_county>San Diego</Institution_county>
  <prot_URL>http://cancer.ucsd.edu/cto/study_details.asp?ProtUI=S00912</prot_URL>
  </protocols>
- <protocols>
  <prot_num>020025</prot_num>
  <prot_title>A Phase II Clincial Trial of a New Receptor-Binding Radiopharmaceutical 
for Sentinel Node Detection in
Breast Cancer</prot_title>
  <pi>Wallace, A.</pi>
  <Prot_accrual_status>2</Prot_accrual_status>
  <Institution>Moores UCSD Cancer Center</Institution>
  <Intitution_zipcode>92093</Intitution_zipcode>
  <Institution_county>San Diego</Institution_county>
  <prot_URL>http://cancer.ucsd.edu/cto/study_details.asp?ProtUI=S00956</prot_URL>
  </protocols>

As you can see, this is properly formatted XML, but CFMX doesn't seem to be able to 
deserialize it into the appropriate
structures-within-structure construct.

If it matters -- and I don't think it does -- the target service is constructed using 
MS's ASP .Net tools.

Searching on Google (amazingly, these days) found nothing of relevance to this problem.

Searching on the forums at macromedia found a single thread on this issue, from last 
month, in which somebody stated
that CFMX's "Axis" SOAP handler has trouble handling complex-within-complex return 
parameters and that no fix is known.

I'm looking for confirmation of this assertion.  If this is true, that CFMX can't 
handle complex-within-complex returns,
then I'm sunk (at least as far as using CFMX goes).  I have no control over the 
publication of the service and can't
change the type of return parameter; what I have to do is figure out some way to 
consume it.

Does anybody know if Updater 1 or Updater 2 would fix this?

Do I need to go back to CF5-era CFX_SOAP to make this work?  My past experience with 
that module has been that it
handles complex-within-complex returns without any apparent difficulty.

Any tips would be greatly appreciated.

-- Larry Afrin
   Medical University of South Carolina
   [EMAIL PROTECTED]


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4
Subscription: 
http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Your ad could be here. Monies from ads go to support these lists and provide more 
resources for the community. http://www.fusionauthority.com/ads.cfm

                                Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
                                

Reply via email to