I’ve got an app running on Railo which has a Flex app being used and the Flex app uses Flex Remoting to communicate with CFC’s from Railo. That has been working absolutely fine for a few weeks now , until today, when I turned on the Apache based HTTP Authentication on the entire folder. All of a sudden, the remoting calls started giving me this error :-
[xml]
java.lang.NoClassDefFoundError: flex/messaging/security/TomcatLoginHolder
flex.messaging.security.TomcatLoginCommand.doAuthentication(TomcatLoginCommand.java:42)
flex.messaging.security.LoginManager.login(LoginManager.java:200)
flex.messaging.services.AuthenticationService.decodeAndLoginWithCharset(AuthenticationService.java:131)
flex.messaging.services.AuthenticationService.decodeAndLogin(AuthenticationService.java:95)
flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:338)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
[/xml]
Obviously, that is not an error that tells you a lot about what has gone wrong. After doing some reading around the web, here is the solution that finally worked for me in the end :-
- Download the BlazeDS Turnkey Zip file from Adobe’s website. (blazeds-turnkey-4.0.0.14931 as of this writing)
- Unzip the downloaded file and copy /resources/security/flex-tomcat-common.jar and /resources/security/flex-tomcat-server.jar to your tomcat’s lib directory or any other directory if you want (I copied in {tomcat_home}/lib/blazeds)
- Open tomcat’s configuration file catalina.properties and find common.loader and add the new jars at the end. My catalina.properties looks like this :-
[xml]common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/lib/blazeds/*.jar[/xml]
- Add the following to tomcat’s context.xml (/opt/tomcat/conf/context.xml)
[xml]<Valve className="flex.messaging.security.TomcatValve"/>[/xml]
- Restart Tomcat
At this point, your Flex remoting calls should work fine. It took me a good couple of hours to sort this one out, so I thought I might as well blog it.
P.S. I am assuming that you already have Railo and Tomcat running together on your server and therefore I haven’t spoken about that in this post. There are loads of posts on the web talking about that stuff so if you need help with that, please Google it 🙂