I just spent a long time troubleshooting a Flex ColdFusion connectivity issue, and now that we’ve figured out what was going on I am sharing this in case it bites anyone else.
There are two basic ways for Flex to invoke back-end ColdFusion CFCs, SOAP (Web Services) or AMF (Flash Remoting). My app had been using SOAP, but I needed to convert to AMF (the performance difference is significant).
Last year Brandon Purcell wrote an excellent blog entry entitled Switching between webservices and Flash Remoting using Flex, and so I used his steps to make the switch. As he notes in that entry, ColdFusion variables returned via SOAP have their names converted to uppercase, whereas variables returned via AMF retain their original case, and so any binding code (or Flex code referencing returned data) needs to be converted from all caps to actual case.
The converted code worked perfectly for CFC methods returning queries, they ran exactly as they did before, just a whole lot quicker. But my CFC methods returning structures all failed, none of my bindings and client-side code worked.
The problem? Waldo Smeets figured this one out, unlike returned queries, returned structure members are all caps, even when using AMF. This is horribly inconsistent, and hopefully it’ll be fixed in the future. For now, keep this in mind.
Leave a Reply