Page 1 of 1

JBoss vs ICE

PostPosted: Tue Dec 13, 2011 1:35 pm
by c.favreau
Hi, since version 4.0, JBoss was replaced by ICE. Can you let me know what were the reasons for this change? Performance? or simply because the JBoss functionnalities used by OMERO were also implemented by ICE?

Please advice, I am also planning to replace JBoss with ICE for my own projects.
Kind regards,
Cyrille

Re: JBoss vs ICE

PostPosted: Tue Dec 13, 2011 4:48 pm
by jmoore
The primary reason for making the move to Ice was the cross-language support, though there were some general usability issues with JBoss remoting. While using RMI for Java-to-Java communication in production, we tried using Hessian as well. The support (at the time) for non-Java languages was limited at best.

In moving away from JBoss, the main thing that had to re-written by us was the session handling / login framework. We removed our JBossLoginModule:

https://github.com/openmicroscopy/openmicroscopy/commits/8fdd2614e6dcd8450c975944fc2cdd904e1f747c

and replaced it with an Ice-based SessionManagerI and PermissionsVerifierI (see the fire package). This integrated tightly with a new "session facade" (in Ice terminology) that's called "ServiceFactoryI".

The smooth migration was helped by the fact that we had a Spring Framework context configuring all of our EJBs, rather than relying solely on the EJB3 mechanism itself. The Ice objects are configured for the Spring context via BlitzConfiguration (Blitz is the name for our post-JBoss server).

We currently only support Java, Python, and C++. The largest barrier to our supporting more Ice languages is that we must code-generate concrete implementations of the slice objects serialized by Ice. This is required if your slice objects specify methods. If you can at all avoid this, I'd suggest doing so.

If there's anything you can share with us about your architecture, the more we should be able to make suggestions / draw parallels.

Good luck with the migration.
~Josh