One of the overlooked advantages with using Java on the server/middleware side is that long running processes in real production environments often have to deal with memory fragmentation, with C++ this is often a very serious, and sometime virtually impossible situation to deal with (writing a pre-allocating memory manager is a non trivial task and you have to worry about people misusingit.) In Java (which I don't personally enjoy working in, but can appreciate), this issue is, for the most part, gone - and in those rare cases where you have to directly intervene, it is trivial to do so.
Given the skill of the average "I work at a bank building IFX/OFX software" developer, I'd rather they stuck to Java...