Информациони системи 1/Пројекат

Извор: SI Wiki
< Информациони системи 1
Датум измене: 4. фебруар 2022. у 13:31; аутор: KockaAdmiralac (разговор | доприноси) (Česte greške i postavka projekta prebačeni na novu stranicu)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Пројекат на предмету носи 20 бодова и брани се у прва два испитна рока. Може да се ради само једном и бодови са испита могу да се пренесу у наредни рок уколико се тада брани пројекат. Обухвата цело градиво рађено на вежбама, али такође може да дође градиво које је поменуто али не и рађено на вежбама, па је понекад потребно сналазити се по ресурсима на интернету. На одбрани пројекта могу да дођу модификације, али се то од почетка 2022. године није још увек десило.

Пројекат се мења сваке године, али обично се ради о централном серверу (Web Application пројекат као на другој лабораторијској вежби) који комуницира са подсистемима (Enterprise Application Client пројекат као на првој лабораторијској вежби) преко JMS, само подсистеми имају приступ својим базама података (користе JPA) и постоји клијентска апликација (клијентски део се обично не ради на вежбама) која са централним сервером комуницира преко HTTP протокола (позивајући његов REST API). Водич испод служи како би напоменуо неке честе грешке у изради пројекта.

Препоручује се да пре израде пројекта урадите лабораторијске вежбе и прочитате водиче за JMS, JPA и REST.

Клијент

Честе грешке

  • Уколико за пројекат додајете JMS комуникацију у REST пројекат, не заборавите да се JMS Connection Factory, Topic или Queue може убацити преко Resource Injection (користећи @Resource анотацију) само уколико је поље у које се убацују означено као нестатичко.
  • Може да вам се деси грешка која пријављује да ентитетске класе можда нису означене са @Entity. То се обично дешава у случају да вам је transaction-type постављен на RESOURCE_LOCAL али немате све класе излистане у persistence.xml.
  • Уколико је transaction-type постављен на RESOURCE_LOCAL и добијате грешку java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension, у persistence.xml додајте:
          <property name="eclipselink.jdbc.property.useSSL" value="false"/>
          <property name="eclipselink.jdbc.property.requireSSL" value="false"/>
    
    • На лабораторијској вежби се ова грешка не дешава јер MySQL сервер покренут тамо не подржава SSL.

Покретање на одбрани

Пошто је ово први пут да студенти доносе своје пројекте на лабораторијске рачунаре, могу наићи на неколико грешки на које при изради лабораторијских вежби нису наилазили.

  1. У ServicesServers додати GlassFish који се налази на директоријуму C:\Program1\glassfish5, осим ако већ није додат са те путање. Покренути и додати неопходне ресурсе за базу података или JMS.
    • Уколико нисте користили transaction-type="JTA" ни у једном persistence.xml, нису вам потребни ресурси за базу података на GlassFish и уколико имате <jta-data-source> у било ком persistence.xml можете га уклонити.
  2. При креирању/отварању пројеката промените JDK на JDK 1.8 (подразумевано је JDK 11) на свим пројектима. U Ant пројектима ова опција се налази на PropertiesLibraries, док се у Maven пројектима налази на Compile.
  3. У свим Ant пројектима морају да се додају библиотеке којима GlassFish не може да приступи јер је NetBeans инсталиран у директоријуму чија путања садржи размак. Библиотеке са списка копирати у фолдер чија путања нема размак и у једном пројекту под PropertiesLibraries изабрати опцију Edit над библиотекама EclipseLink (JPA 2.1) и Java EE 8 API, уклонити све JAR фајлове учитане од стране библиотеке и заменити их JAR фајловима ископираним на путању без размака.
    • Путање JAR фајлова тих библиотека су на следећих местима:
      • EclipseLink (JPA 2.1)C:\Program Files\NetBeans\netbeans\java\modules\ext\eclipselink
      • Java EE 8 APIC:\Program Files\NetBeans\netbeans\enterprise\modules\ext\javaee-api-8.0.jar
    • Такође је потребно додати и конектор за MySQL са C:\Program1\glassfish5\glassfish\lib\mysql-connector-java-8.0.20.jar.
    • Идеално је спаковати све ове фајлове заједно са пројектом, повезане релативним путањама.
  4. У свим persistence.xml подесити да се на базу повезује са налогом admin, чија је шифра 123.
    • Или боље, у SQL скрипти за генерисање базе направити новог корисника и дати му све привилегије и онда њега користити у persistence.xml.
      CREATE USER 'is1'@'localhost' IDENTIFIED BY 'sifra';
      GRANT ALL PRIVILEGES ON * . * TO 'is1'@'localhost';
      
    • Уколико нисте користили transaction-type="RESOURCE_LOCAL" ни у једном persistence.xml, креденцијали за базу се читају са JDBC ресурса на GlassFish серверу и они из датотеке нису релевантни.