Informacioni sistemi 1/JMS

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Na prvoj laboratorijskoj vežbi radi se Java Message Service (JMS).

Postavka

Sledeći postupak bi trebalo da vas dovede do uspešne postavke kako biste bili spremni za pokretanje projekata sa stranice predmeta.

  1. Instalirajte JDK (Java Development Kit) 8. Zvanični sajt za instalaciju traži prijavljivanje pre preuzimanja, pa možete preuzeti i sa sledećeg studentskog drajva. Preporučuje se da osim ove verzije nemate druge verzije JDK instalirane na računaru, ili da vam (ukoliko vam to operativni sistem dozvoljava) JDK 8 bude postavljen kao podrazumevani (java -version komanda bi trebalo da pominje 1.8.0).
  2. Preuzmite Apache NetBeans sa njihovog sajta. Preporučuje se da preuzmete verziju 12.0, koja je takođe i LTS (Long Term Support) zbog toga što je ona instalirana u računarskim laboratorijama i zbog čestih problema sa generisanjem entitetskih klasa u JPA delu gradiva.
  3. Pri instaliranju NetBeans, obavezno ga instalirajte u direktorijumu bez razmaka u putanji. Na Windows, NetBeans se podrazumevano instalira u Program Files direktorijumu, pa neke biblioteke neće moći da se uspešno uvezu. Zato morate promeniti podrazumevanu putanju instalacije na, na primer, C:\NetBeans. Putanja do JDK ne bi trebalo da ima ovih problema.
  4. Kada uključite NetBeans, desnim klikom na odeljak ServicesServers i biranjem opcije Add Server možete dodati GlassFish Server. Pri dodavanju će vas pitati za verziju, gde možete izabrati 5.1.0 ili 5.0 (koja ima jednu začkoljicu pri biranju klase drajvera u trećem bloku predavanja, vidljivu na vežbama Stefana Tubića iz 2020. godine).
    • Ukoliko vam se ovde desi greška "Not a valid GlassFish Server installation.", pogledajte da vam nisu ostale prošle instalacije GlassFish Server, na primer u vašem korisničkom direktorijumu. Takođe možete da probate sa drugom verzijom GlassFish.
  5. Ukoliko vam se desi da ne možete da vidite projekte u Projects odeljku, probajte sa ovim uputstvima.
  6. Ukoliko vam se desi da ne može da se uveze paket javax.jms ili njegovi podpaketi, u Properties tog projekta, pod odeljkom Libraries, možete izabrati Add Library a zatim izabrati Java EE 8 API Library.
  7. Nakon što ste uspešno otvorili projekat, u njemu možete videti @Resource deklaracije sa imenima JMS Connection Factory, Topic ili Queue koje treba da napravite na GlassFish serveru. Server prvo treba da pokrenete desnim klikom na njega i biranjem opcije Start, konzola za upravljanje se nalazi na http://localhost:4848, a resurse možete praviti pod ResourcesJMS Resources u levoj traci.
    • Ukoliko ste pravili više GlassFish servera, port možda nije 4848. To možete da vidite u DAS Port odeljku kada izaberete Properties na serveru nakon desnog klika.
    • Ne zaboravite da poruke mogu da ostaju u Queue i Topic i nakon gašenja vašeg programa. Ponekad može da se desi da vaš program čita iz reda u koji su poslate poruke iz nekog od prethodnih projekata ili iz tog istog projekta ali sa nekom greškom. U tom slučaju najlakše je napraviti novi Queue ili Topic i promeniti ime resursa u projektu. Brisanje i pravljenje resursa sa istim imenom na serveru ponekad može da ne radi.
    • Ponekad pri pravljenju resursa GlassFish može da baci neočekivanu serversku grešku. U tom slučaju samo se vratite na kontrolnu tablu a resurs bi trebalo da ostane tu.
  8. Ukoliko vam se desi greška "The module has not been deployed." pravu grešku možete videti u GlassFish Server tabu. Nisu sve greške označene crvenom bojom.
    • Ukoliko tamo piše "Specified library jar javaee-api-8.0.jar does not exist", pročitajte korak 3.

Napomene

  • Ukoliko pokrećete novi projekat, izaberite Java with AntJava EEEnterprise Application Client.
  • 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 @Resource anotaciju) samo ukoliko je klasa označena kao Enterprise Java Bean, nekom od anotacija poput @Stateless, @Stateful ili @Singleton.
    • Ukolilo dobijate NullPointerException prilikom pristupa ConnectionFactory objektu, to može biti simptom ovog problema.