Call Us Toll Free: (866) 217-9701
I decided to look into Flash/Flex <--> Java communications... I really love Flex and actionscript. Its a great tool for building forms. It has its limitations in that it really does nothing on the server side. I also love Java programming although i consider java front ends to be kinda tedious. I always thought using Flex as a front end for Java applications would be great, so i decided to write a bit of an infrastructure. I also want to try comets socket's with this infrastrucuture when i get some time.
I am basically using a debian server that i built to do all this. I am not going to go into detail on all the code now but i would like to talk about some of the pitfalls that cost me time in doing this.
PITFALL 1: security sandbox
Error #2044: Unhandled securityError:. text=Error #2048: Security sandbox
I had done cross server stuff with flash before, and i was aware of how to use crossdomain.xml. I did not know that when doing transactions through a socket (even locally, serving the file from the same machine java is running on) that i would have to use a different type of policy file.. the as3 code i had to use is:
System.security.loadPolicyFile("xmlsocket://localhost:8080");
PITFALL 2: Policy Server, your kidding right Ok kiddies, in order to have Flex/Flash talk to your java server, you need to write a server to serve the policy file... Or have your admin install one. I tried the ones that adobe mentions and they where not working for me. I ended up writing my own in perl and it is working nicely (still early in testing though). Basically your going to sever a policy back to the flash app that looks a bit like this:
<cross-domain-policy> <allow-access-from domain="*" to-ports="*" /> </cross-domain-policy>
pretty basic stuff. I am guessing adobe is making this a pain in the ass so they can sell us a as3 server or something... Maybe an air server that is for more than desktop apps or something like that... PITFALL 3: iPv6 This one resulted in me losing alot of hair. I really have to read up on iPv6 because i have no idea why it was screwing up my java socket server but it was. I completely rewrote my java server for no reason because of this. It turns out that IpV6 was banging up my java socket server so i had to disable it via adding:
net.ipv6.conf.all.disable_ipv6 = 1
to my servers /etc/sysctl.conf file. The final product is pretty cool, i am passing xml from the Flex front to the Java server. I am probably going to build upon this to write a chat server so i can explore passing data both ways. In the short run i should be able to build some pretty bad as forms that dont require page refreshes to post.
Chris Legge in General 03:00AM Jul 08, 2010 Comments[0]
view portfolio