JBoss Seam 2008/2009

Z JASR Wiki

<<< Powrót do Tworzenie aplikacji wielowarstowych 2008/2009

Spis treści

Wprowadzenie

Ćwiczenia i przykłady autor zaleca wykonywać w systemie operacyjnym Windows. Instalacja środowiska powinna się powieść również w środowisku Linux, przy czym autor zastrzega że miał problemy z uruchomieniem Eclipse IDE for Java EE Developers w wydziałowym laboratorium.

Instalacja

Ze względu na rozmiar środowiska z którego będziemy korzystać (w sumie 600 MB), można pliki umieścić w następujących lokacjach :

  • /tmp dla Linux
  • C:\Documents and Settings\ab123456\ dla Windows

Dla Windows proszę jednak o rozpakowanie JBoss AS oraz utworzenie workspace na dysku Z: (konto na students). W przeciwnym razie wystąpią problemy z uruchomieniem (spacje w ścieżce).

Ściągamy następujące oprogramowanie:

Rozpakowujemy wszystko, a następnie umieszczamy pluginy w JBoss Tools w nowym Eclipse.

Pierwszy projekt

Przy tworzeniu pierwszego projektu będziemy musieli skonfigurować eclipse'a, co zajmie chwile :

  • Uruchamiamy Eclipse.
  • Klikamy File -> New -> Other
    • Wybieramy Seam -> Seam Web Project
    • Wpisujemy nazwę projektu (np. seamisfun)
    • Klikamy Target Runtime -> New
      • Wybieramy JBoss, a division of Red Hat -> JBoss 4.2 Runtime
      • Klikamy Next
      • Ustawiamy Home Directory na katalog macierzysty naszego JBoss AS
      • Klikamy Finish
    • Klikamy Target Server -> New
      • Upewniamy się, że jest wybrany JBoss, a division of Red Hat -> JBoss 4.2 Server
      • Klikamy Finish
    • Wybieramy Configuration -> Dynamic Web Project with Seam 2.1 (technology preview)
    • Klikamy 3xNext (do oporu)
    • Klikamy General -> Seam Runtime -> Add
      • Ustawiamy Home Folder na katalog macierzysty JBoss Seam
      • Klikamy Finish
    • Klikamy Database -> Connection Profile -> New...
      • Wybieramy HSQLDB
      • Klikamy Next
      • Klikamy Drivers -> New Driver Definition (Ikona z "plusem")
        • W zakładce Name/Type z Available driver templates wybieramy HSQLDB JDBC Driver
        • W zakładce Jar List z listy driver files usuwamy hsqldb.jar i dodajemy hsqldb.jar z naszego JBoss Seam (jboss-seam-2.1.1.GA\lib\hsqldb.jar)
      • Klikamy Test Connection i widzimy Ping Succeeded!
      • Klikamy Finish
    • Klikamy Finish
  • Klikamy na zieloną ikonę startu aplikacji i wybieramy run on Server -> JBoss 4.2

wchodzimy w naszej ulubionej przeglądarce na stronę http://localhost:8080/seamisfun/ i sprawdzamy czy z sukcesem zakończyliśmy konfigurację środowiska.

Ćwiczenia

Aplikacja CRUD

Aby stworzyć trochę ciekawszą aplikację, wykorzystamy generator aplikacji CRUD wbudowany w JBoss Tools. Naszym celem będzie aplikacja przypominająca zadanie zaliczeniowe z tegorocznych zajęć JEE (biblioteka zdjęć).

W tym celu tworzymy dwie klasy opisujące encje w naszym projekcie :

  • Klikamy prawym przyciskiem na projekt, i wybieramy New -> Seam Entity
  • Tworzymy kolejno klasy Photo oraz Folder
  • Tworzymy relacje zawierania zdjęć przez folder

przykładowe kody źródłowe klas zamieszczam poniżej :

Klasa Photo

package org.domain.seamisfun.entity;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.ManyToOne;
import javax.persistence.Version;
import org.hibernate.validator.Length;

@Entity
public class Photo implements Serializable {
	private Long id;
	private Integer version;
	private String name;
	private String description;
	private Folder folder;

	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@Version
	public Integer getVersion() {
		return version;
	}

	private void setVersion(Integer version) {
		this.version = version;
	}

	@Length(max = 20)
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	@ManyToOne
	public Folder getFolder() {
		return folder;
	}

	public void setFolder(Folder folder) {
		this.folder = folder;
	}
}

Klasa Folder

package org.domain.seamisfun.entity;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.OneToMany;
import javax.persistence.Version;
import org.hibernate.validator.Length;
import static javax.persistence.CascadeType.ALL;
import static javax.persistence.FetchType.LAZY;

@Entity
public class Folder implements Serializable {
	private Long id;
	private Integer version;
	private String name;
	private String description;
	private Set<Photo> photos = new HashSet<Photo>();
	
	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@Version
	public Integer getVersion() {
		return version;
	}

	private void setVersion(Integer version) {
		this.version = version;
	}

	@Length(max = 20)
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	@OneToMany(cascade = ALL, mappedBy = "folder", fetch = LAZY)
	public Set<Photo> getPhotos() {
		return photos;
	}

	public void setPhotos(Set<Photo> photos) {
		this.photos = photos;
	}

}

Po dodaniu klas, wybieramy New -> Seam Generate Entities, gdzie pamiętamy o zaznaczeniu Use existing entities. Po kliknięciu Finish dostajemy gotową aplikację!

W nowej aplikacji za darmo dostajemy takie ciekawe ficzery jak:

  • sortowanie danych po kolumnach tabeli
  • stronicowanie tabeli
  • edycja wielu obiektów naraz w kilku zakładkach przeglądarki dzięki konwersacją.
  • RESTful URLs - w URL są przechowywane informacje o stanie aplikacji - można do nich wrócić nawet po zamknięciu przeglądarki.
  • zabezpieczenie części aplikacji przed nieuwierzytelnionym użytkownikiem.

Aby lepiej zrozumieć Seam'a dobrym pomysłem jest uważne przejrzenie źródeł wygenerowanej aplikacji. Z pewnością będzie to dobra rozgrzewka przed ćwiczeniami.

Ćwiczenie 1

Masz już podstawową intuicję w posługiwaniu się JBoss Tools. Spróbuj teraz samemu stworzyć nowy formularz zbierający od użytkownika wrażenia po korzystania z aplikacji i dodaj do niego link w Menu.

Wskazówka

Rozwiązanie

Ćwiczenie 2

Stwórz w swojej aplikacji nową stronę, która korzystając z nowego Seam'owego komponentu wyświetli w przystępny sposób liczbę zdjęć i folderów w bazie.

Wskazówka

Wskazówka

Rozwiązanie

Ćwiczenie 3

Spragnieni JBoss Seam'a mogą spojrzeć na początek tutoriala JBoss'a (http://docs.jboss.org/seam/1.0.1.GA/reference/en/html/tutorial.html) i zgodnie z instrukcjami uruchomić u siebie dostarczone z Seam'em aplikacje przykładowe. Do najciekawszych należą DVDStore oraz Registration.

Tutoriale

Ciekawe Linki

Osobiste