Where do I put a cfc file that describes a complex structure for a web service?

Hi!

I'm trying to create a web service in ColdFusion 9 that returns a complex structure or has a complex argument.  I am placing the .cfc file that describes the structure in the same directory as the .cfc that is using the structure.  RIght now I'm just trying to get a wsdl.

I currently have two functions in my .cfc,  The first one returns a string.  The second one ideally returns an array of strings.  Saying returntype="string[]"  gives an error that ColdFusion could not parse string

So I tried making a defined type with the individual element being a string:

<cfcomponent>
    <cfproperty name="InfoSource" type="string">
<cfcomponent>

------------------------------------
My code that uses this cfc is:

<cfcomponent>
    <cffunction name="getzips" access="remote" returntype="string">
       <cfset #resultsCommaDelimtedZips# = "this is the result">
      <cfreturn CommaDelimitedZips>
    </cffunction>

    <cffunction name="getInfoSources" access="remote" returntype="InfoSources[]">
    </cffunction>
</cfcomponent>

The error that I get is:

AXIS error

Sorry, something seems to have gone wrong... here are the details:

Fault - Error attempting to create Java skeleton for CFC web service.; nested exception is:
      coldfusion.xml.rpc.CFCInvocationException: [coldfusion.compiler.ParseException : Invalid CFML construct found on line 3 at column 1.ColdFusion was looking at the following text:<p>&lt;</p><p>The CFML compiler was processing:<ul>&lt; marks the beginning of a ColdFusion tag.Did you mean LT or LTE?</ul>]

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
 faultSubcode:
 faultString: Error attempting to create Java skeleton for CFC web service.; nested exception is:
      coldfusion.xml.rpc.CFCInvocationException: [coldfusion.compiler.ParseException : Invalid CFML construct found on line 3 at column 1.ColdFusion was looking at the following text:<p>&lt;</p><p>The CFML compiler was processing:<ul>&lt; marks the beginning of a ColdFusion tag.Did you mean LT or LTE?</ul>]
 faultActor:
 faultNode:
 faultDetail:
      {http://xml.apache.org/axis/}hostname:ntc15

----------------------------
I have a similar problem if I use cfproperty:

<cfcomponent>
    <cfproperty name="approved" type="string">
    <cfproperty name="total_charged" type="string">
    <cfproperty name="charge_error" type="string">
    <cfproperty name="renewed_until" type="string">
    <cfproperty name="reason" type="string">
<cfcomponent>

http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=webservices_20.html says
Note: If the component files are not in a directory under your web root, you must create a web server mapping to the directory that contains them. You cannot use ColdFusion mappings to access web services.

So I tried putting the .cfc file in a directory beneath my wwwroot folder rather than in it.  That didn't help.

Any suggestions?  I feel like I've done exactly what all the documentation I can find tells me to do!

Thanks!

-- Mabel :-)
mliang@datacollaborative.com
DataCollabAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Hammo777Commented:
I think the return type has to be "array" or the name of a component (or the dot delimeted path to it).  It doesn't like the brackets.  I think you can also just use returntype="any"
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
DataCollabAuthor Commented:
We're working with another company that is doing the front end and using the web service, so I have to have the wsdl show the actual data type, not just "any". But I'll try that just to see if I can get a better result.   I had a similar problem when I tried the name of the component, InfoSources.  I'll try the array - but how do I tell it an array of _strings_ specifically?

Thanks!
0
Hammo777Commented:
I am not sure.  See if this helps.  This guy is an excellent resource for all things CF where webservices are concerned:
http://tjordahl.blogspot.com/2008/04/array-types-in-coldfusion-web-services.html
0
DataCollabAuthor Commented:
Hammo777,

Thanks!  I had already found that post.  I've finally gotten something to work by making my file names and component names be all lower case.  It makes no sense to me, but I do finally have a WSDL.

FWIW, my files are all in the same directory.

Thanks for your help!

0
DataCollabAuthor Commented:
I still don't know how to specify an array of strings, and the answer provided didn't tell me  where to put the other .cfc file.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
WCF

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.