Flex 4 & ColdFusion 9 Remoting Recap
It’s been a couple of years since I worked with ColdFusion and Flex together, but I remember I always like the combination and chose it for my new little Xuland social networking project I’ve been working on (see previous posts).
I had to remember how the whole Flex-ColdFusion remoting setup would work again and I had to overcome a couple of hurdles. I thought I’d share the experience as it would have helped me get up to speed quickly.
Here’s a quick recap of setting up your Flex application to remote to ColdFusion:
- Install ColdFusion (I installed mine to the default C:\ColdFusion9 directory)
- In FlexBuilder, create a new Flex project
- While creating the project, select an Application server type of “ColdFusion” and check the “Use remote object access service” with the “ColdFusion Flash Remoting” option selected.
.
- On the next screen, in my case I’m using a Standalone installation and had to uncheck the “Use default location for local ColdFusion server”. Of course, the root folder was C:\ColdFusion9. I clicked Validate Configuration which validated that the root folder existed.
.
- I happen to use ColdFusion primarily for access to a MySQL datasource, so I had to setup the datasource in the ColdFusion admin first (this information should be readily available anywhere)
- Once the datasource was setup, I first created a value-object (VO) in ColdFusion to represent the object (in this case, a User) I wanted to pass back to the Flex application
.
UserVO.cfc:1 2 3 4 5
<cfcomponent output="false" alias="com.xyz.coldfusion.vo.UserVO"> <cfproperty name="userID" type="numeric"/> <cfproperty name="username" type="string"/> <cfproperty name="password" type="string"/> </cfcomponent>
- After the VO, I created a data-access object (DAO) to query the datasource for a user and return a UserVO to the calling Flex application
.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<cfcomponent output="yes"> <cffunction name="getUserByID" access="remote" returntype="com.xyz.coldfusion.vo.UserVO"> <cfargument name="userID" type="numeric" required="yes"> <cfquery name="getUser" datasource="xuland"> SELECT * FROM tblUsers WHERE userID = '#userID#' </cfquery> <cfreturn getUser> </cffunction> </cfcomponent>
- Back in the Flex project, I setup my RemoteObject tag to point towards the ColdFusion DAO component I created in the last step:
.1 2 3 4 5 6 7 8 9 10 11
<!-- Remote Services --> <mx:RemoteObject id="userService" destination="ColdFusion" source="com.xyz.coldfusion.dao.UserDAO" showBusyCursor="true"> <mx:method name="getUserByID" result="resultHandler(event)" fault="faultHandler(event)"/> </mx:RemoteObject>
- Create your result and fault handlers (here we just display an Alert)
.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<fx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; private function resultHandler( event : ResultEvent ) : void { Alert.show( event.result.toString() ); } private function faultHandler( event : FaultEvent ) : void { Alert.show( event.fault.faultString ); } ]]> </fx:Script>
- Finally create a button or method to call the service:
.1
<mx:Button click="userService.getUserByID( 1 )"/>
Much of this logic may be abstracted off into controllers, delegates, commands or other framework-specific components but this is a fairly simple example of installing, configuring and executing a remote object service call from Flex to ColdFusion.

Recent Comments