Приложение на Seam с нуля
Jboss Seam - мощная платформа с открытым кодом, предназначенная для разработки сложных интернет-приложений на языке программирования Java. Seam включает в себя такие технологии как AJAX, JSF, JPA, EJB 3.0 и BPM. Из своего опыта могу сказать, что работать с Seam очень удобно. В этом фреймворке уже реализовано много задач, с которыми чассто встречается разработчик. Seam иногда поражает небольшим количеством кода, с помощью которого реализуются сложные задачи.
Начать работать с Jboss Seam очень просто. Для этого вам всего лишь необходимо установить Jboss Application Server, который можно найти здесь, а также фреймворк Seam. Каркасы приложений можно создать с помощью seam gen - утилиты командной строки. Так же, для работы с этим фреймворком существуют плагины для среды разработки Eclipse. Подробнее о них можно узнать по адресу http://www.jboss.org/tools . В данной статье приложение будет разрабатываться с помощью этих плагинов.
Начало работы с Jboss Seam
Давайте создадим каркас простого приложения в среде Eclipse. Для этого, после установки Jboss Tools, переключимся в перспективу “Seam”. Далее, выберем в меню File->New->Seam web project. В появившемся меню введем название проекта (с маленькой буквы), создадим новую среду выполнения и новый сервер, на котором будет работать наше приложение. В качестве среды и сервера, необходимо выбрать Jboss AS той версии, которую вы установили. В качестве конфигурации выберите “Dynamic web project with Seam 2.1″. Если вы установили другую версию Seam - выберите ее. Нажав кнопку “далее”, пропускаем несколько экранов - в них мы оставим конфигурацию по умолчанию. Интерес для нас представляет экран, на котором находятся настройки Seam. В поле Seam Runtime укажите путь к директории с установленным Jboss Seam. В группе настроек базы данных выберите подходящий вам сервер и введите настройи доступа выбрав необходимый JDBC драйвер. Проверьте соединение с базой данных. В группе Code Generation введите имена пакетов для вашего проекта. Нажмите кнопку “Finish”. Конфигурация завершена.
В нижней части экрана выберите вкладку “Jboss server view”. На ней вы увидите созданных в процессе конфигурации сервер. Запустите его. Теперь, в браузере вы можете увидеть вновь созданное приложение:

Seam entity
Для создания новой модели данных воспользуйтесь пунктом меню File->New->Seam entity. Вы увидите окно, где можно указать параметры создаваемой сущности. Достаточно ввести только имя класса. Остальные поля будут заполнены автоматически. Для данного примера я создал сущность Article - статья. После завершения операции, в папке src/hot можно увидеть класс ArticleHome, предназначенный для работы со списком статей и ArticleList, предназначенный для редактирования параметров статьи. В папке src/main будет находится класс Article - сама модель данных. Код этого класса необходимо изменить таким образом, чтобы он соответствовал вашим задачам. В моем случае я избавился от полей name и version. Вместо них добавил title и text. Код этого класса выглядит следующим образом:
@Entity
public class Article implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String title;
private String text;
@Column(length = 200)
@NotEmpty
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Column(length = 3000)
@NotEmpty
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
В папке WebContent появились страницы списка статей и редактирования статьи - articleList.xhtml и article.xhtml. Изменим код страницы articleList.xhtml таким образом, чтобы на этой странице выводились только заголовки статей, являющиеся ссылками на страницу редактирования отдельной статьи:
<h:dataTable id="articleList" var="article"
value="#{articleList.resultList}"
rendered="#{not empty articleList.resultList}">
<h:column>
<f:facet name="header">Title</f:facet>
<s:link id="article" value="#{article.title}" propagation="none"
view="/article.xhtml">
<f:param name="articleId" value="#{article.id}" />
</s:link>
</h:column>
</h:dataTable>
Код страницы редактирования статьи необходимо тоже изменить:
<rich:panel>
<f:facet name="header">Edit article</f:facet>
<s:decorate id="titleField" template="layout/edit.xhtml">
<ui:define name="label">Title</ui:define>
<h:inputText id="title" required="true"
value="#{articleHome.instance.title}" />
</s:decorate>
<s:decorate id="textField" template="layout/edit.xhtml">
<ui:define name="label">Text</ui:define>
<h:inputTextarea id="text" required="true"
value="#{articleHome.instance.text}" cols="23" rows="10" />
</s:decorate>
<div style="clear: both" />
</rich:panel>
После перезапуска сервера, перейдя на страницу articleList.seam можно увидеть список статей и добавить новую:

Приложение на Seam за 5 минут!
Как видите, работать с Seam очень легко. Но то что вы увидили - это только вершина айсберга. Seam предоставляет еще много функций, позволяющих заметно ускорить процесс разработки. Кроме того, Seam лего интегрируется в уже существующие приложения, использующие JSF.
Более подробно Seam будет рассмотрен в следующих статьях.

13 Авг 2009 в 5:18 пп
[...] старт. Начать работать с Seam очень просто. Я уже писал об этом. После создания скелета приложения, хватит [...]