You are here:   LOENGUD 2015
Register   |  Login

Enter Title

   Minimize

Loengud

1. Kursuse tutvustus 

Loengu materjal: Sissejuhatus

Loengu salvestus: echo360.e-ope.ee/ess/echo/presentation/2cbf07df-7a98-42b3-b32b-e9d837e06fae

2. REST veebi teenus

Loengu materjal: Loeng 2 REST

Lisamaviited: Google Maps Sample project www.soapui.org/getting-started/api-sample-projects/google-maps.html

Google developers geocoding: developers.google.com/maps/documentation/geocoding/

Result: ararat.ttu.ee:8080/BizAgi-war/

Loengu salvestus: echo360.e-ope.ee/ess/echo/presentation/a245f2b2-64ef-4b03-9238-300026c60c97

3. Integratsioon

 Loengu materjal: Loeng3 Integratsioon

Loengu salvestus: echo360.e-ope.ee/ess/echo/presentation/a311acab-e666-4bcb-8ca1-534e0c843a2f

 

Lisamaterjal 

Flow-Based Programming is Why I am an Engineer from Dan Tocchini on Vimeo.

4. Pilvelahendused

Loengu esitus: Loeng4 CloudSolutions

 Loengu salvestus: echo360.e-ope.ee/ess/echo/presentation/bc458fc9-09b0-4caf-bd47-d28cb75bb162

Introduction to Flow-Based Programming and NoFlo from c-base on Vimeo.

5. Asünkroonne töötlus 

 

Loengu slaidid: Loeng5Async

 

Loengu salvestus: 

 

MSMQService cloud.ld.ttu.ee/MSMQService/MSMQ.svc

 

Lähtekood IDU0080/LinkClick.aspx

 

MSMQClient cloud.ld.ttu.ee/MSMQClient/Default.aspx

 

Lähtekood IDU0080/LinkClick.aspx

 

Näidis xml IDU0080/LinkClick.aspx

 

 

Loeng 6 Veatöötlus ja logging 

 IDULoeng8 Logging

Lisamaterjal: BestPractices

 

Loengu salvestus: eLoeng7veatöötlusLogging

 

Näidisrakendus: cloud.ld.ttu.ee/nLog/

 

Näidisrakenduse kood: nLog

 

Loeng 7 Ettevõtte teenuste siin - Enterprise service bus

 

Loengu esitus: Loeng7_ESB

 

Lisamaterjal: AgileESB

 

Loengu salvestus: echo360.e-ope.ee/ess/echo/presentation/02909a1c-e9ba-4894-bee8-392e32c71c5c

 

 Loeng 8 Biztalk ja Bizagi


Loengu esitus: ILoeng_BizagiBiztalk2015

 

Loengu salvestus: echo360.e-ope.ee/ess/echo/presentation/f14e2ba8-9b21-400b-9363-1a07772e25dc

 

 Loeng 9 Turvalisus

 

Loengu esitus: ILoeng9_BDOC

 

Lisamaterjal: IBDOC_Aruanne

 

Loengu salvestus: echo360.e-ope.ee/ess/echo/presentation/132d21f0-aded-48ef-9ef2-5039483f5ef8

 

 

Loeng 10 OpenERP

 

Openerp

 

Loengu salvestus: 

 

Lisamaterjalid:

 

Bilanss

 

Kasumiaruanne

 

193.40.244.170:1158/

 

andmebaas: IDU0080_2014
admini nimi: admin
admini parool: kevad2014

 

 Loeng 11 Mõõtmine ja Otsustusmudel

 

Loengu materjal: IDU0080loeng11

 

Loengu salvestus: echo360.e-ope.ee/ess/echo/presentation/419d6be2-8542-457a-afbe-0c3ead6e13ac

 

 

Lisamaterjal: IDU0080Goldbergx

 

Loeng 12 Hadoop

 

Loengu materjal: IDU0080/LinkClick.aspx

 

Lisamaterjalid:

IMattei

 

IDanford

Praktikumid

   Minimize

Need tudengid, kes ei ole eelnevalt kuulanud ainet IDU0075 ja ei ole eelnevalt wsdl-iga tegelenud, võiksid enne 2-3 praktikumi iseseisvalt läbi vaadata:

W3schools lehelt järgmised teemad: XML, Schema, WSDL, Soap

www.w3schools.com/

IDU0075 materjalidest samad eespoolnimetatud 4 teemat + 'wsdl-to-java':

www.tud.ttu.ee/im/Tarvo.Treier/idu0075/2013/

 

Praktiliste tööde realiseerimiseks on vajalik arenduskeskkond Eclipse JEE. Arvutiklassides on olemas Eclipse Luna. Workspace'i võite salvestada C:/temp/WS/ alla tekitatavasse alamkausta (kui te tunni lõpus oma projekti parandusi svn serverile ei salvesta, siis peaksite oma workspace kausta kokku pakkima ja enda jaoks turvalisse kohta salvestama).

Kui Eclipse svn serveri poole pöördumisel ei küsi kasutajanime ega parooli ja ei lase alusprojektile ligi, siis on kasutajanimi eelmisest kasutuskorrast juba salvestatud Windows'is settingute alla. Selle kustutamiseks otsige kausta

C:\Users\tudengi_eesnimi.perekonnanimi\AppData\Roaming\Subversion

Ja sealt alt kustutage alamkaustad ära ja siis käivitage uuesti Eclipse ja proovige uuesti svn serveriga ühendust saada.

------------------------------------------------------------

Enda arvutis tööde tegemiseks installeeri:

JDK 7 või 8 (soovitav JDK 8)

Eclipse JEE koos WTP-ga. Lisaks järgnevad pluginad:
    - CXF Web Services (Incubation)
    - JAX-WS Tools (Incubation)
    - Subclipse (http://subclipse.tigris.org/update_1.10.x/)

(CXF ja JAX-WS pluginad saab kätte WTP update site-st) 
Apache CXF (http://cxf.apache.org/download.html) viimane 2.x versioon (2.7.15 versioon)
SoapUI (www.soapui.org) viimane stabiilne versioon
Ant 1.9.4 (võib ka 1.8)
 
 
Lühike installijuhend on siin.
Eclipse Luna 32bit sr1a koos lisadega (WTP, Subversion, ant, cxf) on allalaetav http://zaurus.ttu.ee/soft/IDU0080/.
Kui arvutiklassi arvutis ei ole õiget Eclipse'i versiooni, või see ei tööta korralikult, siis laadige palun alla installikomplekt, pakkige see arvutiklassi arvutis lahti c:/temp/IDU0080/ alla ja käivitage Eclipse.

 

Ülesannete valmis lahendused tuleb ülesse laadida (committida) svn IDU0080 repositoris oma rühma /tags/ kausta alla. Ülesannet võib kaitsta ka hiljem, hilinemise miinuspunktid arvestatakse ülesse laadimise (tagimise) kellaaja järgi.
 

Rühma praktikatöö kaitsmist hinnatakse rühmale tervikuna (või siis rühma liikmete osas eraldi kui lahenduse kaitsmine on eraldi), eksamihinne on personaalne.
Hilinemise korral väheneb konkreetse ülesande eest saadav maksimaalne võimalik hinne:
kuni 7x24h: 25%
kuni 14x24h: 50%
üle 14x24h: 100%

Ülesande alusprojektiga ja lahendusprojektiga SVN-is toimetamise SVN lühijuhend asub siin (sisaldub ka põhjaliku juhendi lõpus).

Põhjalik juhend asub siin.

Versioonihalduse lühijuhend on siin (SVN.pdf) ja teine osa on siin (mõlemad sisalduvad ka põhjaliku juhendi lõpus):

Mõned viited:

 Lisaks vaadake üle Eclipse Help>Help Contents>Subclipse - Subversion Eclipse Plugin all peituv.

Osade ülesannete juures on vaja kasutada Tomcat'i:

http://apache.arvixe.com/tomcat/tomcat-8/v8.0.18/bin/apache-tomcat-8.0.18-windows-x64.zip

 

Praktikumid 2,3. REST teenuste ülesanne (15p)

   Minimize

REST teenuste ülesanne

http://maurus.ttu.ee/idu0080/REST/

Neljapäeva õhtuse tunni lisamaterjalid: Irina.

Hajuspäringu veahaldus (15p)

   Minimize

Praktikumis tutvustatakse hajussüsteemi veahaldust kasutades varasemate aastate 2. praktikumis tehtud veebiteenust (vt. menüüst 'Eelmised materjalid'). Hajussüsteemi veahalduse ülesanne ise oli varasematel aastatel ülesanne 4, hetkel on slaidides ja alusprojektis sellele samuti viidatud kui ülesanne 4.

Praktikumi slaidid

Praktikumis kasutatav kood asub SVNis:

https://cloud.ld.ttu.ee/svn/idu0080/praktikum/branches/praktikum4/Yl4_Kodune_Klient

https://cloud.ld.ttu.ee/svn/idu0080/praktikum/branches/praktikum4/Yl4_Kodune_Server

Hajuspäringu ülesande võimalikke probleeme ja lahendusi on täiendavalt lahatud siin.

Kliendiprojekti käivitamine commandline Ant'i abil.

 nn. Tunniülesanne:

  1. Kui arvutis veel ei ole, siis alla laadida Eclipse Luna aadressilt http://zaurus.ttu.ee/soft/IDU0080/ ning lahti pakkida C:\temp kausta.
  2. Avada Eclipse ning seadistada: Window -> Preferences -> Web Services -> CXF -> määrata Apache CXF juurkataloog.
  3. Teha checkout projektidele Yl4_Kodune_Server ja Yl4_Kodune_Klient. Probleemide lahendamine: Klassi arvutites peab serveri checkout järel vajadusel määrama JRE asemel JDK kasutamise (seda ka projekti Build Path'i all), ka CXF-i library peab vajadusel uuesti seadistama projekti build path'i all. Serveri checkout järel peab vajadusel määrama Target Runtime: J2EE Preview (problem, rightclick, quickfix, add target runtime).
  4. Käivitada ainult klient (ilma serverita). Klient tuleb käivitada build.xml failist (Run as: Ant Build; või Ant aknas Run target). Kliendiprojekti käivitamine commandline Ant'i abil.
  5. Kinni püüda viga ja kuvada veateade.
  6. Proovida ühendada 20 korda iga 2 sekundi tagant. Käivitada server samal ajal.
  7. Serveri projektis luua pakett ee.ttu.idu0080.hinnakiri.util ning lisada sinna klass, mis valideerib isikukoodi (Google: isikukoodi valideerimine java)
  8. Serveris muuta klassi HinnakiriServiceImpl meetodit getHinnakiri() nii, et see kontrolliks, kas päringu parameetriks on korrektne isikukood. Kui ei, siis visata WebServiceException koos veateatega.
  9. Käivitada server ning proovida SoapUI kaudu erinevaid isikukoode sisestada.
  10. Kliendis püüda kinni SOAPFaultException

NB. Isikukoodi valideerimine EI SISALDU koduülesandes!

Koduülesanne

Koduse ülesande algne kood asub:

https://cloud.ld.ttu.ee/svn/idu0080/praktikum/branches/praktikum4/Yl4_Kodune_Klient

https://cloud.ld.ttu.ee/svn/idu0080/praktikum/branches/praktikum4/Yl4_Kodune_Server

Aluseks on võetud 2. praktikumi tunniülesande kood, kuid teenust on muudetud nii, et hinnakirja filtreeritakse vastavalt sisendparameetrina antud maksimaalsele hinnale.

Paketti ee.ttu.idu0080.hinnakiri.exceptions on näitena lisatud HinnakiriNumberFormatException ning HinnakiriNumberFormatFault. Kui teenusele etteantud hind ei ole numbrilises formaadis, siis visatakse teenuse poolt exception ning seesama erind püütakse kliendi poolt kinni. Fault klassi kasutatakse aga erindite haldamiseks rakenduste vahel. Erind ühes rakenduses võib olla väga erineva tähendusega erindist teises rakenduses, seepärast kasutatakse veebiteenustes fault objekte, mida erinevad rakendused saavad omavahel vahetada. Exception sisaldab endas rakendusespetsiifilist infot, näiteks millisel koodireal viga juhtus, fault aga ainult üldisemat veakirjeldust.

Koduse ülesande lahendamiseks on vaja teha järgnev:

  1. Lahendada teenuse pool olukord, kui etteantud hind on negatiivne. Luua selle jaoks täiendavad exception ja fault klassid, visata serveri pool exception ja püüda see kliendi pool kinni. Klasside nimed valige ise.
  2. Analoogselt lahendada teenuse pool olukord, kui etteantud hind on null. 
  3. Analoogselt lahendada teenuse pool olukord, kui etteantud hind on suurema täpsusega kui 2 komakohta (nt. 12,34 on korras, aga 12,345 on juba liiga täpne).
  4. Eelmise 3 punkti tulemusena peab koos etteantud näidetega olema paketis ee.ttu.idu0080.hinnakiri.exceptions kokku 8 klassi. Selle paketi sisu peab Yl4_Kodune_Klient ja Yl4_Kodune_Server projektides olema täpselt ühesugune. Samuti peab ühtima HinnakiriService.java fail.
  5. Klient peab kinni püüdma kõik loodud erindid ning nende kohta väljastama arusaadavad teated.
  6. Kui kliendil ei õnnestu teenuse poole ühendada (server on maas vms.), siis peab klient proovima 10 korda ühendada ning seejärel väljastama veateate. Ühelgi teisel juhul ei tohi tsükkel käivutuda rohkem kui üks kord.
  7. Ülesanne peab olema SVN'is tagitud.
  8. Kaitsmise ajal peavad tudengid muu hulgas olema valmis selgitama hajuspäringu veahalduse põhimõtteid.

NB. Sammul 5, vt. ka klass HinnakiriService.java sisaldab annotatsiooni @XmlSeeAlso

http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/annotation/XmlSeeAlso.html

Seal tuleb ära loetleda Fault klassid ja getHinnakiri meetodis throws exception peab ära loetlema Fault klassidele vastavad Exceptionid.

NB2! testimise näidisjuhud failis Klient.java main() sees võiksid olla järgmised:

response = port.getHinnakiri("12.00A");
                //response = port.getHinnakiri("12A");
                //response = port.getHinnakiri("12.34");
                //response = port.getHinnakiri("12.340");
                //response = port.getHinnakiri("12.345");
                //response = port.getHinnakiri("12.0");
                //response = port.getHinnakiri("-12.00");
                //response = port.getHinnakiri("0.000");

 

Asünkroonse päringu ülesanne (15p)

   Minimize

Asünkroonse päringu ülesanne oli varasematel aastatel ülesanne 3, käesoleval aastal on varasemate aastate ülesannete 3 ja 4 järjekord vahetunud.

Praktikumis tutvustatakse asünkroonset päringut kasutades JMS-i (Java Message Service)

Praktikumis kasutatav kood asub SVNis Repository location:

https://cloud.ld.ttu.ee/svn/idu0080/praktikum/branches/praktikum3_lahendus

Tehke esmalt checkout tavalise Java projektina, seejärel Java perspektiivis tehke projektile Team - Branch/Tag ja määrake projekti koopia asukoht oma rühma kausta all (näiteks https://cloud.ld.ttu.ee/svn/idu0080/ryhmxx/branches/praktikum3_lahendus), seejärel Team - Switch to another branch/tag.

Alternaviise võimalusena laadige alla praktikum3_lahendust sisaldav Eclipse worspace pakitud kujul siit.

 Ülesandes kasutatakse ActiveMQ teeki.


Täiendage Producer (saadab sõnumeid) ja Consumer (loeb sõnumeid) klasse (praktikum3_lahenduses juba tehtud).
Looge serialiseeritav klass Car (praktikum3_lahenduses juba tehtud).
Käivitage EmbeddedBroker, Consumer ja Producer (vastavad ant targetid runBroker, runConsumer ja runProducer).

Käivitada saab Eclipsis, kuid ülevaatlikkuse huvides on mõistlikum targetid igaüks käivitada eraldi terminaliaknas (Windowsi Start nupu alt Run ...). Vt. näiteid siit.

Juhend

Rauli juhend (doc) + sama juhend pdf kujul. Käivitus Commandline Ant'i abil.

NB! Command line Ant programm tuleb klassi arvutisse alla laadida (siit) ja C:\Temp\

kausta alla lahti pakkida. Ant käivitamisel on vaja käsureal ette näidata ka ant programmi kataloogitee:

C:\projekti_kaust> C:\Temp\ant\apache-ant-1.9.4\bin\ant targetinimi

Kui te target protsessi korralikult kinni ei pane, vaid sulgete lihtsalt commandline akna, siis jääb protsess tööle. Töös olevaid java protsesse saab vaadata järgnevalt:

C:\Program Files\Java\jdk1.8.0_31\bin>jps

Ja seejärel process id abil saab Task Manageri alt töötama jäänud protsesse kinni panna.

 

NB! Neljapäevase rühma praktikumis Irina poolt muudetud näidisprojekt asub svn-is järgmisel aadressil:

https://cloud.ld.ttu.ee/svn/idu0080/praktikum/branches/praktikum3_irina_ppp3

Irina projekti saab alla laadida ka siit.

 

Üks võimalus koduse ülesande lahendamiseks:

1. Tuleks teha 4 erinevat klassi: poe consumer ja producer, vabriku consumer ja producer.

2. Erinevaid käivitatavaid rakendusi (kus on main meetod) peaks olema kolm: broker, pood (consumer) ja vabrik (consumer).

3. Poe rakenduse käivitamisel hakkab see kõigepealt consumerina sõnumeid kuulama. Kui consumer objekt on loodud, luuakse kohe ka producer objekt ning saadetakse välja tellimus.

4. Vabriku rakenduse käivitamisel hakkab see samuti sõnumeid kuulama. Kui sõnum vastu võetakse, töödeldakse tellimus, luuakse producer objekt ning saadetakse tellimuse vastus.

 

Äriprotsessi ülesanne. (20p)

   Minimize

Otselink materjalide kataloogile:

Lugege läbi ka ülalviidatud kaustas ReadMe.txt faili sisu.

 

Näide selle kohta kuidas võiks ülesande tegemist alustada ja kuidas kasutada tund.ttu.ee
teenuseid, äriprotsessi ülesandes vastavad sellele sammud 2,3 (kullerite nimekirja pärimine): ProductServiceClientServiceClient_naide.zip
 
 Viited olemasolevatele teenustele mida peab ülesandes kasutama:
 
tund.ttu.ee veebteenuste andmebaasi struktuur ja testandmed:
 

Spikker ja neljapäevases tunnis tehtud kood asuvad siin (arvutiklassi arvutites kasutage Irina näite juures JRE7 libraryt):

https://cloud.ld.ttu.ee/svn/idu0080/ryhmirina/branches/yl5_2015pr

Alusprojektid (Irina rühm) asuvad siin:

cloud.ld.ttu.ee/svn/idu0080/ryhmirina/branches/yl5_mall

 

NB! Eclipse'i projektis lisage Build Pathi alla Apache CXF 2.7 library. CXF 3.0 library korral ei pruugi teil rakendus korralikult töötada.

OpenERP ülesanne (30+5p)

   Minimize