I am putting an application together that loads 'sub applications' as Modules. The sub applications use LiveCycle dataService ES. (Express version at the moment) for data access. Individually the modules load and work properly. The problem I have encountered is this. I load Module1 which calls dataService.fill(), retrieves and displays data properly. I then load Module2 which calls dataService.fill(), retrieves and displays data properly. When I return to Module1 and call dataService.fill() I can see that the fill request is received and properly processed on the server but on the return I get the following exception.
TypeError: Error #1034: Type Coercion failed: cannot convert mx.data.messages::SequencedMessage@c42b151 to mx.data.messages.SequencedMessage.
at ::NetConnectionMessageResponder/NetConnectionChannel.as$33:NetConnectionMessageResponder: :resultHandler()
On the server side I am using SpringFramework2.0.2, Hibernate 3.2, and LiveCycle DS version 2.5 06/2007
The client side is built through eclipse with the sdk deleivered with LCDS.
I think you just need to force link the fds.swc in the main swf (put it in include-libraries in flex-config.xml or via the mxmlc command line option so it links all of the fds.swc classes into the main swf). You also would put it in the external-library-path for the modules so those classes to cut down on the swf size for the modules. (I think I have that right but I am not an expert on modules and linking.)
What's happening now is that each of the modules is loading its own copy of the SequencedMessage class. The player is using a single table though to store the alias table (i.e. the server to client class name mapping). When you load Module 1, it registers Module 1's version of SequencedMessage but when you load Module 2 it overwrites it with Module 2's version in that table.
If there are any other classes that will be serialized over the wire that are shared by each of those modules, they will also need to be linked into the main swf to avoid the same problem.