Informacioni sistemi 1/Projekat
Projekat na predmetu nosi 20 bodova i brani se u prva dva ispitna roka. Može da se radi samo jednom i bodovi sa ispita mogu da se prenesu u naredni rok ukoliko se tada brani projekat. Obuhvata celo gradivo rađeno na vežbama, ali takođe može da dođe gradivo koje je pomenuto ali ne i rađeno na vežbama, pa je ponekad potrebno snalaziti se po resursima na internetu. Na odbrani projekta mogu da dođu modifikacije, ali se to od početka 2022. godine nije još uvek desilo.
Projekat se menja svake godine, ali obično se radi o centralnom serveru (Web Application projekat kao na drugoj laboratorijskoj vežbi) koji komunicira sa podsistemima (Enterprise Application Client projekat kao na prvoj laboratorijskoj vežbi) preko JMS, samo podsistemi imaju pristup svojim bazama podataka (koriste JPA) i postoji klijentska aplikacija (klijentski deo se obično ne radi na vežbama) koja sa centralnim serverom komunicira preko HTTP protokola (pozivajući njegov REST API). Vodič ispod služi kako bi napomenuo neke česte greške u izradi projekta.
Preporučuje se da pre izrade projekta uradite laboratorijske vežbe i pročitate vodiče za JMS, JPA i REST.
Klijent
Česte greške
- Ukoliko za projekat dodajete JMS komunikaciju u REST projekat, ne zaboravite da se JMS Connection Factory, Topic ili Queue može ubaciti preko Resource Injection (koristeći
@Resourceanotaciju) samo ukoliko je polje u koje se ubacuju označeno kao nestatičko. - Može da vam se desi greška koja prijavljuje da entitetske klase možda nisu označene sa
@Entity. To se obično dešava u slučaju da vam jetransaction-typepostavljen naRESOURCE_LOCALali nemate sve klase izlistane upersistence.xml. - Ukoliko je
transaction-typepostavljen naRESOURCE_LOCALi dobijate greškujava.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension, upersistence.xmldodajte:<property name="eclipselink.jdbc.property.useSSL" value="false"/> <property name="eclipselink.jdbc.property.requireSSL" value="false"/>
- Na laboratorijskoj vežbi se ova greška ne dešava jer MySQL server pokrenut tamo ne podržava SSL.
Pokretanje na odbrani
Pošto je ovo prvi put da studenti donose svoje projekte na laboratorijske računare, mogu naići na nekoliko greški na koje pri izradi laboratorijskih vežbi nisu nailazili.
- U Services → Servers dodati GlassFish koji se nalazi na direktorijumu
C:\Program1\glassfish5, osim ako već nije dodat sa te putanje. Pokrenuti i dodati neophodne resurse za bazu podataka ili JMS.- Ukoliko niste koristili
transaction-type="JTA"ni u jednompersistence.xml, nisu vam potrebni resursi za bazu podataka na GlassFish i ukoliko imate<jta-data-source>u bilo kompersistence.xmlmožete ga ukloniti.
- Ukoliko niste koristili
- Pri kreiranju/otvaranju projekata promenite JDK na JDK 1.8 (podrazumevano je JDK 11) na svim projektima. U Ant projektima ova opcija se nalazi na Properties → Libraries, dok se u Maven projektima nalazi na Compile.
- U svim Ant projektima moraju da se dodaju biblioteke kojima GlassFish ne može da pristupi jer je NetBeans instaliran u direktorijumu čija putanja sadrži razmak. Biblioteke sa spiska kopirati u folder čija putanja nema razmak i u jednom projektu pod Properties → Libraries izabrati opciju Edit nad bibliotekama EclipseLink (JPA 2.1) i Java EE 8 API, ukloniti sve JAR fajlove učitane od strane biblioteke i zameniti ih JAR fajlovima iskopiranim na putanju bez razmaka.
- Putanje JAR fajlova tih biblioteka su na sledećih mestima:
- EclipseLink (JPA 2.1) —
C:\Program Files\NetBeans\netbeans\java\modules\ext\eclipselink - Java EE 8 API —
C:\Program Files\NetBeans\netbeans\enterprise\modules\ext\javaee-api-8.0.jar
- EclipseLink (JPA 2.1) —
- Takođe je potrebno dodati i konektor za MySQL sa
C:\Program1\glassfish5\glassfish\lib\mysql-connector-java-8.0.20.jar. - Idealno je spakovati sve ove fajlove zajedno sa projektom, povezane relativnim putanjama.
- Putanje JAR fajlova tih biblioteka su na sledećih mestima:
- U svim
persistence.xmlpodesiti da se na bazu povezuje sa nalogomadmin, čija je šifra123.- Ili bolje, u SQL skripti za generisanje baze napraviti novog korisnika i dati mu sve privilegije i onda njega koristiti u
persistence.xml.CREATE USER 'is1'@'localhost' IDENTIFIED BY 'sifra'; GRANT ALL PRIVILEGES ON * . * TO 'is1'@'localhost';
- Ukoliko niste koristili
transaction-type="RESOURCE_LOCAL"ni u jednompersistence.xml, kredencijali za bazu se čitaju sa JDBC resursa na GlassFish serveru i oni iz datoteke nisu relevantni.
- Ili bolje, u SQL skripti za generisanje baze napraviti novog korisnika i dati mu sve privilegije i onda njega koristiti u