In my opinion, if your in that situation, you either have an application that is an edge case, or you've architected your application poorly.
My rule of thumb:
If it has the word 'enterprise' anywhere in it's name or description. Avoid it like the plague, only use it if its the last available option.
I think Grails mostly succeeds at this modernization, but I have to give fair warning that there are still some enterprisey bits (Spring, which isn't so bad and Hibernate, which will bite you) down in the guts.
edit: Forgot to mention that Groovy is a fantastic, under-appreciated language with some neat features that should get more attention. Groovy is a major selling point for using Grails.
The best part of groovy to me is that I can use it where I want, when I want, with a single POM dependency and without (generally) having to think about how it interacts with existing Java code.
When I write a Jersey controller, I start in java, if I hit a point where I'm thinking "this would be easier with a closure" or "defining an entire inner class here is stupid", I stop, change the file ending from .java to .groovy, and code away.
The @CompileStatic-based static compilation in Groovy only began being written 1 year ago (in October 2011), and was only mature enough to be included in a production-ready version of Grails (version 2.2) a few weeks ago (December 2012).
Scala has had static compilation from the very beginning, and was rewritten between Scala 1.x and Scala 2.x.
Stick to dynamic typing if you're using Groovy, even stuff that isn't performance critical.
Also, you are not restricted to hibernate since the GORM stuff has been refactored and now supports new hotnesses like MongoDB and Redis - https://github.com/SpringSource/grails-data-mapping
I absolutely won't use Hibernate for any new projects. I don't understand why anyone is using Hibernate. Here is a write-up of my experiences with it:
1. code reloading (ie change code, see results) doesn't work reliably and server restarts are slow
2. The ORM is still based on hibernate.
Is it just me or does anyone else have an incredibly difficult time with hibernate? I've wasted many stressful days debugging weird flush exceptions. I've never had trouble with ActiveRecord. I think it boils down to the concept of a "session" in hibernate, which is essentially a giant global variable begging you to touch it or look at it wrong, whereupon it will plot its revenge by deciding which obscure exception to throw at flush time.