Лучший уровень просмотра с простыми URL-адресами для приложения EJB3

Я хотел бы получить ваше мнение о том, какой слой представления для меня будет наиболее подходящим для EJB 3.0 [1] Java-приложения.

JSF бесполезен, потому что это беспорядок, когда дело доходит до веб-URI. Мне нужна структура представления, которая помогла бы автоматизировать отправку и проверку html-формы при использовании чистых URI, таких как example.com/story/1 или example.com/?story=1 (с использованием метода GET).

Мое первое предположение состояло в том, чтобы использовать Spring MVC. Spring великолепен, но кажется излишним, поскольку JPA плюс EJB уже делают тяжелую работу. Мне нужно всего пару вещей, ну, на самом деле их четыре:

  1. JPA, EJB 3.0 для бизнес-уровня
  2. Чистые URI: желательно example.com/story/1
  3. Помощники HTML-форм (проверка, конвертеры и т. д.)
  4. Шаблоны похожи на Apache Tiles или JSF ui:composition.

Итак, какой из них вы бы выбрали?

Объявление [1]: он используется в основном для JPA и локальных сеансовых компонентов без сохранения состояния/состояния.


person Mike Minicki    schedule 07.09.2009    source источник
comment
Какое приложение вы планируете создать? Это интранет-приложение? Или публичный? Это повлияет на ваш выбор технологии просмотра. Пример: GWT — отличный выбор для приложений интрасети, но не подходит для приложений, которые должны быть проиндексированы поисковыми системами и т. д. и т. д.   -  person David Tinker    schedule 07.09.2009
comment
Это общедоступное интернет-приложение. Это одна из причин, по которой я хотел бы иметь чистые URL-адреса, подобные REST. Я еще не использовал GWT, но из одного поиска в Google я вижу, что он плохо интегрируется с EJB3, не так ли?   -  person Mike Minicki    schedule 07.09.2009


Ответы (2)


Мое первое предположение состояло в том, чтобы использовать Spring MVC. Spring великолепен, но кажется излишним, поскольку JPA плюс EJB уже делают тяжелую работу.

Я не согласен с этим утверждением. Весна не должна быть предложением «все или ничего». Я не вижу ничего плохого в использовании Spring web MVC, если это все, что вам нужно.

Я бы поместил ваши EJB и JPA за интерфейсы сервисов Spring и позволил веб-уровню справиться с ними, используя обычную идиому Spring.

person duffymo    schedule 07.09.2009
comment
Проблема с Spring заключается в его конфигурации. Когда вы пытаетесь связать Tiles и Spring вместе, вы получаете то, что можно назвать адом конфигурации XML — фрагменты URL находятся в трех, четырех местах? Ну, есть также вероятность, что это просто мое плохое понимание Spring, но... в целом это был мой опыт, когда я пробовал его. - person Mike Minicki; 07.09.2009
comment
Аннотации могут помочь. Лично я считаю, что жалобы на XML-конфигурацию преувеличены. Я не знаю, что вы имеете в виду о 3 или 4 местах. Я думаю, что плитка - это реальная проблема. Я предпочитаю Sitemesh. - person duffymo; 07.09.2009
comment
Ладно, я немного преувеличил. На самом деле это два места — SimpleUrlHandlerMapping и конфигурация плитки, которая довольно подробна. Введите Sitemesh. Я вообще не знаю Sitemesh и ни разу его не скачивал - это туториал меня немного напугал. Выполняет ли он анализ дерева (x) html при каждом вызове? Я немного боюсь возможного снижения производительности. - person Mike Minicki; 08.09.2009

Apache Wicket поддерживает REST готовые URL-адреса: с использованием комбинации BookmarkablePageLink и Параметры страницы конструктор объекта WebPage. Wicket также поддерживает шаблоны Velocity, и, поскольку он полностью основан на OO/POJO, в целом его легко поддерживать.

Wicket вписывается в части Model и View MVC Model 2 и содержит несколько примеров общие валидаторы и указанные валидаторы форм и поэтому имеет достаточно механизмов для поддержки таких функций.

person Esko    schedule 07.09.2009
comment
Калитка. Звучит интересно. Я еще не пробовал (да, я имел в виду пробовал не пробовал ;) еще. Но, эй, как его интеграция с EJB3? Могу ли я использовать аннотацию @EJB или мне нужно вручную извлекать компоненты с помощью вызовов JNDI? - person Mike Minicki; 07.09.2009
comment
Концепция модели Wicket (проверьте интерфейс IModel‹T› в javadoc Wicket) использует POJO вместо EJB: s, что означает, что вы вообще не выполняете никаких JNDI-поисков, потому что Wicket никоим образом не выигрывает от Enterprise JavaBeans. Wicket - это своего рода плохое предложение в этом случае, поскольку единственное, что он действительно использует из всего стека технологий Java EE, - это часть Servlet/Filter на веб-уровне, все остальное основано на POJO. Есть места, где вы можете использовать аннотации (например, вставлять компоненты Spring непосредственно на страницы), но они на самом деле не связаны с аннотациями EJB. - person Esko; 07.09.2009
comment
Итак, как именно вы используете JPA в качестве модели и EJB в качестве бизнес-сервиса с Wicket? Что ж, думаю, мне есть над чем покопаться. - person Mike Minicki; 08.09.2009
comment
JPA на самом деле является просто Hibernate в аннотированном режиме, Wicket также поддерживает Hibernate, поэтому использование JPA не должно быть большой проблемой. - person Esko; 08.09.2009
comment
Это то, что я искал: wicketstuff.org/confluence/display/STUFFWIKI/ Интересно, работает ли это сейчас :) - person Mike Minicki; 08.09.2009
comment
Эй, круто, я должен был проверить Wicketstuff сам. Обратите внимание, что Wicketstuff — это проект-инкубатор для неофициальных компонентов, но там есть много вкусностей, поэтому не стесняйтесь использовать его, если его лицензия вам подходит. - person Esko; 08.09.2009
comment
Материал wicket-javaee работает не совсем так, как ожидалось. Он вводит ресурсы и EJB в ваши классы калитки, НО (и это важно) он неправильно вводит @Resources в сами EJB. - person hohonuuli; 14.04.2010