Aplikacje Rozproszone i Biznesowe (ARB), semestr letni 2010/2011

Grupa 2.

Zajęcia: piątek 14.00 - 15.30 sala 0059

Zasady zaliczenia ćwiczeń:
  1. Na zajęciach będziemy rozwiązywać krótkie zadania związane z aktualną tematyką wykładów.
  2. Obecność na zajęciach obowiązkowa. Można mieć dwie nieusprawiedliwione nieobecności
  3. W czasie trwania semestru zostaną ogłoszone tematy 3 miniprojektów, które będą państwo oddawać na maila. Czas wykonania miniprojektów to przypuszczalnie 2 tygodnie (może zostać wydłużony dla specyficznych projektów). Tematyka będzie wspólna dla wszystkich. Za każdy minimprojekt można dostać maksymalnie 10 punktów. Nie będę oceniał wyglądu, ani funkcjonalności interface'u, choć dobrze by było abym umiał się w nim połapać (proponuję podpisywać pola etykietkami itp.).
  4. Do połowy semestru można zgłaszać się do realizacji projektu (obowiązkowy). Temat projektu wybierają (proponują) państwo sami, ew. wybiorą z przygotowanej przezemnie listy. Projekty będą realizowane w parach, dobór osób do projektu jest całkowicie dowolny i leży w państwa gestii, aby się umówić, kto z kim co i dlaczego:).

    Temat projektu musi być tak skonstruowany aby w projekcie trzeba było wykorzystać następujące technologie:

    • Java EE
    • Persistance, Hibernate, lub inny ORM
    • JSF lub inny framework MVC
    • EJB lub Spring
    (nie będzie możliwości dyskusji typu: "a czy można w Pythonie/Django, ASP.NET, interface we flashu" itp. cuda, tematem przedmiotu są aplikacje biznesowe w Javie i z tego też powinien być projekt).

    Do projektu należy dołączyć krótki opis założeń projektu (co ma projekt realizować) i jego dostępnych funkcji. Najlepiej, żeby wszystkie ważne funkcje były dostepne od razu w jakimś menu. Nalezy dokładnie opisać jacy domyślni użytkownicy są w systemie (jeśli dotyczy to projektu), jak zalogować się na konto admina (przykłądowe) żeby zarządzać treścią itp. Jeśli w aplikacji wystepują różne rodzaje kont użytkowników, należy przykłądowe konta stworzyć (w deskryptorze xml, w adnotacjach etc.) i opisać ich role, oraz sposób logowania się na te konta w aplikacji.

    Jeśli użyto jakiejś egoztycznej technologii (np iBatis zamiast Persistance), to także proszę to użycie krótko opisać, napisać skąd wziąć biblioteki potrzebne do skompilowania, itp.

    Za projekt można uzyskać maksymalnie 40 pkt.

  5. W trakcie zajęć będzie też można zdobyć dodatkowe punkty "uznaniowe" za aktywne branie udziału w zajęciach, np. rozwiązywanie zadań. Maksymalnie można otrzymać za to 10 pkt.
  6. Zadania oddaje się do końca zajęć. Każdy wybiera 3 spośród zestawów zadań (publikowanych przed ćwiczeniami, linki będą pojawiać się poniżej) i oddaje wszystkie zadania z tych wybranych zestawów. Za każdy z zestawów można dostać maksymalnie 3 punkty (za zestawy z 1 zadaniem - 1pkt, z 2 zadaniami - 2pkt, z 3 i więcej zadaniami - 3pkt). Na koniec semestru sprawdzam te zadania i przyznaję punkty.
  7. Ostatni punkcik z puli 10 punktów rezerwuję dla osób aktywnych (odpowiadającyh na pytania, wyjaśniających przy tablicy itp.) i/lub dla osób ze wzorową obecnością (wszystkie ćwiczenia).
  8. Ocena będzie wyliczona proporcjonalnie 41 - 48 dst, 49 - 56 +dst, 57 - 64 db, 65-72 +db, 73 - 80 bdb.
  9. Punkty z ćwiczeń będą dodawane do wyniku z egzaminu i na podstawie sumarycznej punktacji będzie się otrzymywać ocenę z przedmiotu. Szczegółowe informacje zostaną podane na wykładzie.

Przydatne linki:
Nie odpowiadam za zawartość stron wskazywanych przez poniższe linki po zakończeniu zajęć z danego przedmiotu.

    Strona wykładu - link będzie podany kiedy zostanie podany na wykładzie :)

Materiały do ćwiczeń:

  1. 25 lutego, Zajęcia organizacyjne

Tematy miniprojektów:

  1. Miniprojekt 1: termin 22 kwietnia. Baza danych w XML. Należy zaprojektować bazę danych składającą się z dwóch tabel powiązanych relacją wiele do wielu (np. autorzy-książki). Oprócz danych dokument może też przechowywać maksymalne użyte ID. Należy zaprojektować schemat danych DTD lub XML Schema (schemat nie musi uwzględniać spójności bazy) dla dokumentu reprezentującego bazę. Należy stworzyć serwlet pozwalający (przez parametry żądania HTTP) na wykonywanie podstawowych operacji bazodanowych (np http://localhost/serwlet?op=dodajAutora&imie=Antoni&nazwisko=Czechow). Powinna być możliwość dodawania autorów, książek, powiązań między istniejącymi autorami i książkami, usuwania autorów, książek, powiązań oraz wyświetlania zawartości bazy (poprzez podanie w zapytaniu kryteriów). Powinna być możliwość wyświetlenia wszystkich autorów, wszystkich książek, autorów o nazwisku zgodnym z wyrażeniem regularnym, książek o tytyle zgodnym z wyrażeniem regularnym, książek których współautorem jest zadany autor oraz autorów zadanej książki. W przypadku wyświetlania zawartości, odpowiednie zapytanie XQuery lub szablon XSLT powinno przekształcić XML na (X)HTML który serwlet zwraca do przeglądarki. Można wykorzystać wzorzec Two Step View: najpierw przekształcić duży dokument XML na mały tymczasowy dokument zawierający tylko te dane, które mają być wyświetlone, a potem dokument pośredni zamienić na HTML.
  2. Miniprojekt 2: termin 20 maja. Prosta webowa aplikacja CRUD dla bazy danych. Należy stworzyć aplikację umożliwiającą korzystanie z funkcjonalności CRUD dla bazy danych składającej się z dwóch tabel powiązanych relacja wiele do wielu (np autor - książka). W każdej z tabel powinny być po 1-2 pola tekstowe (np. IMIE i NAZWISKO dla autora i TYTUL dla ksiazki).
    Aplikacja powinna korzystać ze Springa i serwera Jetty oraz powinna być budowana przy użyciu Mavena.
    Baza danych może byc dowolna, byle by była SQLowa (np. może byc sqlite albo MySql). Dostęp do bazy danych powinien byc realizowany w oparciu o DAO stworzone jako springowy bean JdbcTemplate.
    Aplikacja powinna być stworzona w oparciu o archetyp maven-archetype-Spring pobrany stąd (zakładając, że mamy Mavena archetyp instalujemy w repozytorium lokalnym przez mvn install w folderze rozpakowanym z zipa, uwaga: archetyp jest dla mavena 2.x).
    Prosta aplikacja webowa stworzona w oparciu o ten archetyp dostępna jest na stronie wykładu. Budujemy ją przez mvn clean install i startujemy przez mvn jetty:run. Można tą aplikację wykorzystać jako punkt wyjścia do projektu.
    W aplikacji dozwolone sa wstawki javy na stronach jsp (alternatywnie można użyć JSTL). Beany aplikacyjne (np DAO) i sesyjne powinny być singletonami Spring i beanami Springowymi o scope="session". Ewentualne atrybuty żądania (będą potrzebne jeśli chcemy robić aplikację MVC) można tworzyć w oparciu o servlet api (request.setAttribute).
    Nie jest wymagana pełna funkcjonalność CRUD. Powinno być można: wylistować wszystkie książki i autorów (autor i książka powinni być klikalni i kliknięcie powinno pokazywać książki dla autora i autorów dla książki), dodawać książki i autorów, dodawać wpisy do relacji (czyli wiązać już istniejące książki z autorami).
    Zabronione jest użycie gotowych rozwiązań typu scaffolding. Nie należy też wykorzystywać żadnych dodatkowych frameworków (jak Spring MVC czy JSF).
    Aplikacja powinna poprawnie obsługiwać polskie literki.
  3. -- zostanie podany wkrótce --

Tematy projektów zaliczeniowych:

Na tej podstronie można znaleźć listę tematów projektów wraz z przypisanymi osobami.

Inne:

Jeśli znajdzie się chętny na przygotowanie prezentacji na temat ręcznej konfiguracji serwera i kontenera serwletów, to proszę o zgłoszenie tego do mnie na maila. Prezentację trzebaby przygotować na któreś z ostatnich ćwiczeń. Chodzi o to, aby pokazać, jak bez pomocy standardowych paczek (komponentów) netbeansa typu glassfish zainstalować, skonfigurować i uruchomić serwer i kontener serwletów (np. apache + tomcat). Dodatkowym atutem będzie skonfigurowanie tego na jakimś linuxie np. na maszynie wirtualnej z debianem server, tak aby działało to w całej pracowni. Na taki serwer trzeba wgrać przykładowe aplikacje (.war) skompilowane w netbeansie albo w eclipsie. Można pokazać jak zmodyfikować skrypt ant w netbeansie czy eclipsie, aby paczka była automatycznie deploy'owana na naszym utworzonym serwerze. Za zrobienie tej prezentacji można automatycznie dostać 10 punktów uznaniowych.

  1. Ćwiczenia 25.02.2011
  2. Ćwiczenia 04.03.2011

    Refleksja w Javie

  3. Ćwiczenia 11.03.2011

    RMI, CORBA

  4. Ćwiczenia 18.03.2011

    XML

  5. Ćwiczenia 23.03.2011

    XML cd.

  6. Ćwiczenia 15.04.2011

    REST, SOAP, Web Services (Apache CXF)

  7. Ćwiczenia 29.04.2011

    Web Services cd. (Apache CXF)

  8. Ćwiczenia 29.04.2011 (odrabiane)

    Spring Web

  9. Ćwiczenia 13.05.2011

    Spring WEB + Maven cd.
    (Update 13 maja 2011) Projekt do zadania 3 z poprawionym POM.

    Prosty projekt servletu dla tych wszystkich, którzy nigdy nie widzieli jak wygląda ta technologia. Proszę przejrzeć wszystkie pliki (nawet xml), w komentarzach jest napisane co do czego służy

    Tutaj tutorial na temat JSP
    A tutaj trochę na temat formularzy w html

  10. Ćwiczenia 27.05.2011

    Persistance (EJB przeniesione na potem)

  11. Ćwiczenia 03.06.2011

    Persistance cd. i JSF

  12. Ćwiczenia 10.06.2011 (3h, odrabiamy jedne zajęcia)

    JSF i AJAX (na odrabianych zajęciach)