Я думаю, что ваша характеристика Граальс как «Багги» - это немного резкое. Несмотря на то, что вы столкнулись с ошибками при использовании Grails, это часто основные рамки (весна, гибернация) или плагин, который несет ответственный, а не грабл.
Также, учитывая, что Hibernate является реализацией JPA, действительно ли это имеет смысл сказать, что
все равно предпочло бы, чтобы JPA на Гормах
в любом случае, если вы действительно не довольны драгами или любыми других Рамки, которые вы упомянули, Play Framework может стоить взгляда.
Я вспомогал использование JAX-RS в качестве объединяющей веб-структуры в прошлом . Вы можете в значительной степени сделать все, что вам нужно с JAX-RS; Основным недостатком является все предметы, возможно, не так хорошо документированы в одном месте, как с такими вещами, как весна MVC, полосы, гребли, шов и др.
Для просмотров, его довольно простым в использовании JAX-RS с Джерси и поддерживают веб-интерфейс в HTML в дополнение к спокойным услугам в JSON / XML / что угодно. Вы можете повторно использовать элегантное согласование контента Jaxrs, поэтому HTTP Content Contents используются для решения, если возвращается HTML или XML и т. Д. (Кроме того, вы можете весить HTML на стороне сервера, чтобы избежать служебных XML в некоторые веб-браузеры, которые предоставляют нечетные принять заголовки - я Глядя на вас Safari, который предпочитает XML к HTML!). например Добавление @implicitProduces («Текст / HTML; QS = 5») к вашим ресурсам бобов будет весить HTML выше, чем любое другое представление. Вы также можете настроить PostFixes URI (например, добавление .html или .xml или .json), чтобы переопределить согласование контента; что делает тестирование различных представлений в браузере намного проще.
Джерси поддерживает неявные представления красиво, чтобы вы могли представить представления в HTML, используя любой шаблон, как JSP или шаблоны подъема или что-то еще; Затем используйте более традиционные провайдеры Jax-RS для Marshalling типа XML / JSON. Вы можете быть явным с видами; Или позволь JAX-RS найдут свой шаблон и т. Д.
, чтобы увидеть неявные представления в действии, которые, вероятно, стоит загружать источник для Джерси и глядя на образцы, такие как книжный магазин (поиск @impliciTTroduces, если хотите).
С точки зрения вещей, таких как проверка, его легко интегрировать валидацию компонентов JSR в ресурсный боб; Таким образом, вы можете выполнить пользовательскую проверку ресурса или DTO или что-то еще. Точно так же есть хорошая форма публикации поддержки в Джерси (Форма бобов).
Я бы порекомендовал использовать некоторую структуру DI / IOC для введения ресурсов бобов с вещами, которые им нужны (например, вещами базы данных, фасоль валидации или объекты сервисных объектов или Whatnot). Убийца работает довольно хорошо с Джерси, если вы хотите избежать весны; Хотя весна с javaconfig позволяет избежать много XML.
Для сложных UIS вы, вероятно, хотите использовать JavaScript на клиенте в эти дни. Хотя легко от JavaScript, чтобы вызвать спокойные сервисы (особенно если они используют JSON или JSONP) - отсутствующую деталь элегантно повторно повторно повторно повторно повторно повторно повторно повторно находятся в java / Jax-Rs. Пока RestyGWT выглядит наиболее перспективным. Однажды, возможно, лучшие маршаллинг JSON Marshalling, Джексон будет иметь коренные привязки GWT. Идея будет повторно использовать объекты DTO в GWT на стороне клиента и на стороне сервера JAX-RS - оставаясь полностью спокойными.
Это не в вашем списке, но я бы порекомендовал RESTAULY , чтобы создать веб-сайт, которые довольно простым в использовании ... просто нужно использовать аннотации на методах для доставки WebServices, а также все, что вы написали, что вы хотите.
Также, если вы хотите хорошую интеграцию EJB, вы можете использовать RESTALESY с Framework Sword
Я хотел бы упомянуть Restlet Framework , который был первым фреймворком REST для Java, когда он был запущен в 2005 году. Он зрелый, масштабируемый, имеет большую базу пользователей и активное сообщество.
Версия 2.0 находится на завершающей стадии разработки и предоставляет широкий набор функций, включая:
Взгляните на проект и попробуйте: http://www.restlet.org/