Witam,
Planuje swoj projekt inzynierski, ktory chce napisac w Java EE, ktore troche juz znam (bo 3 miesiace w tym pracuje, poki co rezygnuje z nauki alternatywnej technologii Spring, bo co za duzo na poczatek to nie zdrowo, przyjdzie na to czas). Aplikacja zostanie napisana na serwer Glassfish v4.

Zalezy mi na tym, aby aplikacja przechowywala pliki: od malych (dokumenty po kilka kB) po wiekie (np. po kilkaset MB). Do tego jakies zarzadzanie uprawnieniami w dostepie do zasobow plikowych. Jako dataSource chce uzyc OpenLDAP, ktory banalnie latwo spiac ze Spring Security.

Pytanie:s

  1. Czy MongoDB nadaje sie do przechowywania plikow w aplkacji Java EE? Jakie biblioteki najlepiej beda sie do tego nadawaly? Czy do dostepu do NoSQL warto tworzyc oddzielny modul EJB? Zalezy mi na prostocie i wspolpracy z OpenLDAP. Moja obawa: integracja tych technologii moze byc trudna.
  2. Chce zaimplementowac obluge mailow i podlaczyc do schedulera (np. timer od EJB). Czy apache commons-email to dobra droga, czy tez sa lepsze alternatywy? Zalezy mi na dobrej dokumentacji i prostocie, niekoniecznie perfekcji.
  3. Jako GUI planuje wykorzystac na standardzie PrimeFaces polaczone z JSF 2.2 (domyslne na serwerze aplikacji). Znam solidne podstawy JSF i IceFaces (i nie widze powodu, aby wybierac IceFaces skoro sa forkiem).
  4. Jako kontener DI planuje uzyc CDI, tylko jako zaleznosc dostepny tez bedzie Spring (czysty JASS nie jest tym czego potrzebuje, a po wyprobowaniu Shiro nie mam ochoty w to isc, co nawyzej w przyszlosci).
  5. Fajnie byloby sie nauczyc najistotniejszych zagadnien z testowania jednostkowego: co warto poczytac?
  6. Kiedy robiac zapytania do bazy lepiej warto uzywac Criteria Queries, a kiedy JPQL (Eclipselink)?

Pozdrawiam,

Z tego, co widze EclipseLink radzi sobie z MongoDB:
http://wiki.eclipse.org/EclipseLink/Examples/JPA/NoSQL

Jezeli dobrze mysle, wystarczy wiec ze utworze sobie Session Bean / DAO, w ktorym bede pobieral moje pliki (w tym rowniez bardzo duze). I bean ten wstrzykne do WebGUI, a bezpieczenstwo bedzie zapewnione na poziomie WebGUI.

Czy jest to wzglednie sensowne?