Archive for June 9th, 2007

Consuming a .NET Web Service with Complex Types

Saturday, June 9th, 2007

Although simple types such as string and int will be automatically handled by ColdFusion’s SOAP mechanisms, the complex types “made up” by .NET are not. This results in “type mismatch” errors.

The following describes the steps needed to use a .NET service with complex types. The ArrayOfString type and a MyDotNetComp Sales API are used as an example.

  1. Try to use the service and get a “type mismatch” error. The Java AXIS system will create .class files for each interface in the service.
  2. Browse the “C:\CFusionMX7\stubs\” folder for these files. They will be under a folder structure unique to the service being called. For example the folder for Travelex is “C:\CFusionMX7\stubs\sometemp\com.mydotnetcomp.www\”.
  3. Copy the whole of this folder to “C:\CFusionMX7\wwwroot\WEB-INF\classes\”. For example, “C:\CFusionMX7\wwwroot\WEB-INF\classes\com.mydotnetcomp.www\”
  4. Add the path “C:\CFusionMX7\wwwroot\WEB-INF\classes\” to the ‘ColdFusion Class Path’ in the ColdFusion Administrator in the ‘Server Settings > Java and JVM’ section and restart the ColdFusion server. This step is required for AXIS to access the .class files.
  5. One of the .class files in this example folder will be ArrayOfString.class which maps the ArrayOfString complex type defined for the web service.
  6. This .class file can be used as an object type and used in the call to the web service, as shown in the example below;
<cfset ary = listToArray("abc", "def", "ghi") />

<cfset aofs = createObject("java", "com.mydotnetcomp.www.ArrayOfString").init() />

<cfset aofs.setString(ary) />

Copyright © 2005, David Beale

  • Valid XHTML 1.0!
  • Valid CSS
  • Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0