Steve Bryant wrote:
I am trying to plan my first web services application.

Right now both sides are ColdFusion applications (that I control). Later other sites may be involved with other languages.

I need to pass complex data. I know that I should avoid passing queries in order to stay agnostic.

What I don't know is how to handle complex data in a manner that is sufficiently self-documenting that it will be easy to consume for future web sites. Anyone have any suggestions?

I tried to Google for this, but I am too dim to figure out a search term that would get me the information that I need. (a few pages of "web services complex data", didn't help).

Thanks!

Steve Bryant.
Bryant Web Consulting LLC
http://www.BryantWebConsulting.com/
http://steve.coldfusionjournal.com/

I'm not very familar with WS's but I suggest search houseoffusion.com - I recall question coming up often.

You might start here:
http://www.houseoffusion.com/cf_lists/index.cfm/method=messages&threadid=38478&forumid=4

Also, this message belongs to the thread but for some reason there is no threadID for it and therefore I can't find it on houseoffusion - pasted copy below:
Subject: Webservices Complex data Types
From: Tom Jordahl <[EMAIL PROTECTED]>
Date: Mon, 21 Feb 2005 11:59:41 -0500
Thread: http://www.houseoffusion.com/cf_lists/index.cfm/method=messages&threadid=0&forumid=4#195754

Umer,

If it is an enumeration type (I need to see the actual Schema) then CFMX 6.l
doesn't handle it, but CFMX 7 should do it fine.  We will construct the Java
enumeration type that the Axis generated stub requires using the String
constructor.  This code was missing from 6.1.

Lawrence is incorrect that CFMX can't handle a complex type inside a complex
type.  The Web service code should correctly make a JavaBean type from any
struct that you pass, even if that struct is inside another struct.

In short, most of the problems with invoking web services with complex types
are in guessing the CFML structures that will match the JavaBeans generated
by the Axis engine.

One of the methods for debugging complex data types is to invoke the Apache
Axis "WSDL2Java" program directly on the WSDL you are trying to consume.
This will generate Java classes (sometimes lots of classes) that you can
then examine to find out what exactly is required for the service.

Here is how:

Set your CLASSPATH environment variable to include the following jar files
cfusion/lib/axis.jar
cfusion/lib/saaj.jar
cfusion/lib/jaxrpc.jar
cfusion/lib/xercesImpl.jar
cfusion/lib/wsdl4j.jar
cfusion/lib/commons-logging-1.0.2.jar
cfusion/lib/commons-discovery.jar

For example on Windows, change directory to CFusionMX7\lib:
C:\CFusionMX7\lib>set
CLASSPATH=axis.jar;saaj.jar;jaxrpc.jar;xercesImpl.jar;wsdl4j.jar;commons-log
ging-1.0.2.jar;commons-discovery.jar

Then run
 java org.apache.axis.wsdl.WSDL2Java -v -o myoutput http://host/to/my/wsdl


Replace the URL with the URL of your WSDL file and "myoutput" with the
directory you want the files generate to go to.  Then take a look at the
files generated.  In particular you can look for the "interface" that will
contain all of the operations of the web service.  You can then see the Java
types that CFMX is trying to create from your CFML.

Hope this helps.


Tom Jordahl
Macromedia Server Development 


-- 
Peter J. Farrell :: Maestro Publishing

blog	:: http://blog.maestropublishing.com
email	:: [EMAIL PROTECTED]
phone	:: 651-204-0513
---------------------------------------------------------- You are subscribed to cfcdev. To unsubscribe, send an email to [email protected] with the words 'unsubscribe cfcdev' as the subject of the email. CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting (www.cfxhosting.com). An archive of the CFCDev list is available at www.mail-archive.com/[email protected]

Reply via email to