I'm using Mule in all last projects and I find it a very good product. As well Mule is protocol aware (you can configure endpoints using all available (many) protocols) I found a very good solution for our needs to configure Mule in this way:
- using the GoF "Command Pattern" to execute remote requests
- using the TCP/IP protocol for communication between distributed components (the fastest)
- using Java serialization to transport complex objects between client and server components by setting the ByteArrayToSerializable and SerializableToByteArray transformers
I found a bug in Mule about serialization of objects sent back as response. To resolve it you can use two transformers instead of these resident in package org.mule.transformers.simple.
I've open the issue on Mule's Jira system. To track it follow this link: http://jira.symphonysoft.com/browse/MULE-498. You'll find the patched transformer classes attached to this Jira issue ;-)