If Open Source is a strong constraint sure you have to shift to JEE or RoR (Mono is too young). But you have to consider that the TCO of your project will be augmented by the higher price of JEE consultants.
I don't know very well RoR, but you could have some problem to find consultants at a professional level.
DOT.NET is easier to use and to develop with and you can find a lot of developers, not so expensive. Sure you have to pay for the OS and platforms as SQL Server and so on, but you told us the TCO, so you have to consider all the costs...
Especially JEE has a lot of consultants in an enterprise environment, so the cost are higher than .NET. IMHO :-) And you have to consider that JEE tools are not so refined as .NET Tools. JEE people wants to sell you consulting, not OSs ;-)
May I advice you a 4th choice? PHP: it has a lot of consultants, it is open source and you can find guy developers or professional developers. It's not so elegant or appealing as Java, .NET and RoR, but a lot of Web Application are developed in PHP: Facebook is a great example! Joomla, Wordpress.
With PHP you find all you want as consultants and platforms.
Sure I assume you want to develop Web App because in the case of fat I advice you only .NET!
IMHO