Если приложения Grails и EJB находятся в одной локальной сети, то с использованием RMI все в порядке. Это способ общения с EJB по умолчанию, он встроен в Java и поддерживается в Grails.
Если вам нужно использовать веб-сервисы, тогда ваш контейнер будет иметь встроенную поддержку для представления EJB-компонентов как веб-сервисов (при условии, что J2EE 1.4 или более поздняя версия) Какой контейнер вы используете?
Если вы не можете использовать (или не доверяете) контейнеры, которые поддерживает WS, то лучше всего выбрать среду, которую вы можете использовать в обоих приложениях, что позволит избежать проблем совместимости. Метро хорошо сработало для меня, но я не пробовал его с Grails.
Также есть более легкие способы обмена сообщениями XML, чем полноценные веб-службы SOAP'ы. Hessian и Burlap являются примерами, плюс у Spring есть собственная структура обмена сообщениями HTTP.