We have found recently this powerful libray provided by JBoss.
The performance we have gain in terms of speed is that JBossRemoting + JBossSerlization is 8.72 times faster than JavaRMI + JavaSerialization (JDK 6 update 11)
In our real scenario, basically we are sending a list of around 100000 user defined objects from clients to servers. This data It is around 15MB.each message call
The clustered architecture we have deployed is not relevant to mention; but what I want to point; it is how easy has been to move from Java RMI to JBoss Remoting. Just one line of code and you have your server and client applications running.
//server side code //where this is the target object TransporterServer.createTransporterServer("socket://"+ yourhostname+": port/?serializationtype=jboss", this, serverName); //client side code //where remoteServerClass.class is just the remote server interface like RMI remoteServer = (T) TransporterClient.createTransporterClient("socket://"+remoteHostname+":remotePort/?serializationtype=jboss" , remoteServerClass.class);
Once you get the remote reference to the remote object, you can invoke methods on the object running in the remote Java virtual machine. The same way you do it for your RMI solution.
The purpose of JBoss Remoting is to provide a single API for most network based invocations and related service that uses pluggable transports and data marshallers. The JBoss Remoting API provides the ability for making synchronous and asynchronous remote calls, push and pull callbacks, and automatic discovery of remoting servers. The intention is to allow for the addition of different transports to fit different needs, yet still maintain the same API for making the remote invocations and only requiring configuration changes, not code changes, to fit these different needs
JBoss provides nice features such Pluggable transports, Callbacks and many other, so you do not have to re-invent the wheel.
Although we are using version 2.5, and we are waiting for the forthcoming 3.0, there is complete performance test report where you can compare JBoss implementation against Java and Spring Remoting.