XML Ohjelmistokehityksessä 8105200 1/5 1 Yleistä 1.1 Tavoitteet Harjoitus 3: Vaatimukset Tämän harjoituksen tavoitteena on luoda liityntä asiakkassovelluksesta palvelimeen. Tämän lisäksi on tarkoitus tutustua muutamiin salaustekniikoihin, joilla pystytään varmentamaan ja salaamaan asiakkaan ja palvelimen välinen yhteys. 1.2 Palautus Harjoitus palautettavat 18.04.05 klo 12.00 (maanantai). 1.3 Versiointi Versio Tila Päiväys Tekijä Selite (muutokset, korjaukset yms.) 1.0 Vedos 02.02.05 MM Alustava versio 2 Vaatimuserittely 2.1 Yleistä Vaatimukset ryhmässä 0000 ovat harjoitustyön kannalta tärkeitä. Muissa ryhmissä esiintyvät asiat ovat enemmänkin täydentäviä vaatimusattribuutteja kuin vaatimuksia. Ainoastaan rajapintojen nimet ja niiden metodien kuvaukset ovat tärkeitä ja ne pitää säilyttää sellaisinaan. Harjoituksessa arvostetaan dynaamista asiakasta vähemmän kuin DII-asiakasta, koska dynaaminen asiakas on hyvin lähellä toisen harjoituksen staattista asiakasta. Toisaalta molempien asiakastyyppien toteuttaminen on arvokkaampaa kuin vain yhden tyypin. Staattisen asiakkaankin voi tehdä, mutta siitä ei saa pistettä. Toisaalta se saattaa helpottaa salauksien tekemistä. Salauksissa on kolme osa-aluetta: viesti signeeraus, viestin salaus ja yhteyden salaus. Kaikkien näiden tekemisestä saa täydet salauspisteet. Jos on toteuttanut vain viestin käsittelyn (signeeraus ja salaus), niin saa vain puolet pisteistä. Täysiin salauspisteisiin liitty myös se, että on kuvattu erillisessä dokumentissä, mitä toimia vaaditaan salauksen kääntämiseksi ja käyttämiseksi palvelimella. Viimeisenä kohtana arvostellaan palautuksen yleinen ilme. Tähän liittyvät mm. sellaiset asiat kuten ohjeistus sekä se, että palautuksesta ei löydy absoluuttisia polkuja opiskelijan omalle koneelle.
XML Ohjelmistokehityksessä 8105200 2/5 2.1.1 Vaatimukset 0000 Yleisasiat 0001 Asiakasyhteyden luominen dynaaminen asiakas DII-asiakas 0002 XML-tietoturvallisuus XML-signature XML-encryption User token 0003 Web-palvelun tarjoaa harjoituksen 2 palvelin 0004 Tietovaraston tarjoaa harjoituksen 1 tietovarasto 0010 Yksi web-sovelluksen käyttäjä kerrallaan - ei tarvitse välittää yhdenaikaisuudesta 2.2 Warehouser seittisovellus Warehouser-sovellus toimii harjoituksen käyttöliittymänä. Sovelluksen selainkonteksti löytyy osoitteesta http://your_host:your_port/warehouser/warehouser (esim. http://localhost:9000/warehouser/warehouser). Sovellus (ShopServlet + jsp-sivut) periaatteessa kyselee tarvittavia asioita ja välittää ne eteenpäin web-palvelun asiakasliittymään (xmlohj.client.citemhandler ja xmlohj.client.cloanhandler) saakka. Asiakasliittymä on opiskelijan toteuttama luokka, joka välittää viestit sekä vastaukset sovelluksen ja palvelun välillä. warehouser.jsp itemadded.jsp :ShopServlet :ItemActions :CItemHandler :xxclient «webservice» Warehouse 1.0 add item 1.1 additem 1.2 newitem :Item 1.3 set("all properties") 1.4 add(newitem) 1.5 add("newitem") 1.6 add("newitem") 1.7 [request <= newitem]: 1.8 redirect 2.0 return to main 2.1 redirect Kuva 2.1Lisää nimike Oheinen kuva (Kuva 2.1) esittää yhtä sekvenssiä sovelluksen käyttöliittymästä asiakasliittymään saakka. Kuvassa käyttöliittymän pääsivu (warehouser.jsp) lähettää sovellukselle (ShopServlet) viestin add item, joka sisältää uuden nimikkeen tiedot. Sovellus välittää toimintopyynnön nimekeen hallinasta vastaavalle kontrollerille (ItemActions), joka koostaa seittiviestistä uuden nimikkeen. Tämä uusi nimike toimitetaan palveluproxylle (CItemHandler), joka piilottaa itse palvelun käytön ihmeellisyydet ja erikoisuudet. Proxyn tarkoituksena on välittää välillisesti (xxclient) kautta viestit web-palvelulle.
XML Ohjelmistokehityksessä 8105200 3/5 XxClient-luokka on opiskelijan toteutus dynaamisesta asiakkaasta (dynaaminen tai DII) asiakas, joka hoitaa kaikki yhteyden luomiseen tarvittavat toimet. 2.3 Asiakasliittymät 2.3.1 Yleistä Dynaamisesta ja DII-asiakkaasta on enemmän tietoa J2EE tutoriaalissa (versio 1.4) luvussa 8 Building Web Services with JAX-RPC / Web Service Clients. Tutoriaalin esimerkeissä TUTORIAL/examples/jax-rpc-hakemistossa on esimerkkejä molemmista asiakkaista. 2.3.2 Vaatimukset 1000 Dynaaminen asiakas liittymä 1001 CItemHandler- luokkaan dynaaminen asiakastoteutus (esim. DII) 1002 CLoanHandler- luokkaan dynaaminen asiakastoteutus (esim. dynamic) 1003 Staattisen asiakkaan saa toteuttaa vain äärimmäisessä hädässä 1010 Dynaamisen asiakkaan tulee luoda yhteys web-palveluun ja välittää pyynnöt sekä vastaukset sovelluksen ja palvelun välillä 2.4 Tietoturva 2.4.1 Yleistä Tietoturvasta löytyy lisää J2EE:n tutoriaalin luvussa 32 Security ja web-palveluun liittyvää tarkempaa tietoa on JWSDP:n tutoriaalin (versio 1.4) luvuissa 3 XML and Web Services Security sekä 4 Java XML Digital Signature. Tietoturvasta ja XML:stä on selostusta ja esimerkkejä myös hakemistossa JWSDP/xws-security. 2.4.2 Vaatimukset 2000 Tietojen turvaaminen 2001 Asiakasliittymä käyttää XML-Sig mekanismia viestien allekirjoitukseen 2002 Asiakasliittymä käyttää XML-Enc mekanismia viestien salaukseen 2003 Asiakasliittymä käyttää User auth mekanismia yhteyden salaukseen 2.5 Tietovaatimukset 4000 Tietovaatimukset 4001 Nimiketiedot ja lainatiedot tallennetaan yhteen XML-tiedostoon 4002 Lainaaja ei tarvitse tunnistusta 4003 Tietovaraston osalta pätevät harjoituksen 1 ominaisuudet 4004 Tiedoston tallennus (mieluiten) palvelun omaan hakemistoon 2.6 Palvelun asennus (Tomcat deploy)
XML Ohjelmistokehityksessä 8105200 4/5 6000 Palvelun asennus 6001 Tomcat-palvelimelle tulee asentaa (deploy) asiakasbinääri 6002 Tomcat-pavelimelta tulee poistaa (undeploy) asiakasbinääri 6100 Tomcatille palvelun asentamista varten luotava Manager-tunnus, jonka oikeuksilla asennetaan binääri 6101 JWSDP/conf/tomcat-users.xml-tiedostoon voi lisätä rivin <user username= manager password= manage fullname= Manager roles= manager > 6200 Asiakas tomcatin kontekstiin /warehouser/ 6201 Asiakkaan pääohjelma tomcatin kontekstiin /warehouser/warehouser 2.7 Toteutus 5000 Toteutus 5001 Harjoitustyössä tulee käyttää ensimmäisten harjoitusten toteutuksia hyväksi joko siten, että kopioi harjoitustyön lähdekoodia hyväksi sellaisenaan (kopioi, helpottaa montaa asiaa), tai käännettynä (common-hakemistossa JAR-pakettina ja kopioituna sopivasti web-sovellukseen) 5002 Toteutuksessa pitää käyttää Java JDK:n ja JWSDP:n tarjoamia kirjastoja 5003 Toteutuksessa saa käyttää ulkopuolisia kirjastoja (tulee toimittaa asiakkaan mukana myös web-sovellukseen ja katsottava, että sovellus käyttää niitä) 2.8 Tuotteenhallinta 8000 Tuotteenhallinta 8001 Ulkopuoliset kirjastot pitää toimittaa palautuspaketin mukana common-hakemistossa ja toimittaa ne Tomcatille (ulkoisten kirjastojen asentuvuus ja toimivuus Tomcatilla pitää olla varmistettu) 8002 Päätason käännösohjaustiedoston (build.xml) pitää sisältää tehtävät: 1) HARJ2 käännä ja aseta ohjelma ajokuntoon (palvelun käännös, asennus, asiakasosuuden kääntö) sekä julkista kaikki tarvittavat elementit Tomcatille 2) PUHDISTA poista käännöstuotteet, poista sovellus ja palvelu Tomcatilta sekä palvelu UDDI-rekisteristä 8003 Harjoitustason käännösohjaustiedosto tulee sisältää vähintään seuraavat tehtävät: 1) build oletustehtävä, joka kääntää ja valmistelee ohjelman ajoa varten 2) clean poistetaan käännöksen aikaiset tiedostot 8004 Konfiguraatiodokumentti, jossa kerrotaan mitä ominaisuuksia pitäisi löytyä xmlohj.properties tiedostosta sekä mitä oletetaan CLASSPATH:in ja PATH:in sisällöstä. 8100 xmlohj.properties-tiedostosta pitää löytä seuraavat ominaisuudet: xmlohj.home = sinun harjoituksen juurihakemisto (esim. c:/, jos harjoituksesi tulee c:/123456-hakemistoon) tomcat.host = localhost tms. eli Tomcat palvelimen nimi tomcat.port = 8080 tai 9000 tms. eli portti, josta Tomcat vastaa uddi.host = localhost tms. eli uddi-palvelimen nimi uddi.port = 8080 tai 9000 tms. eli portti, josta uddi vastaa registry.username=testuser uddi-registerin käyttäjätunnus registry.password=testuser uddi-registerin käyttäjätunnuksen salasana
XML Ohjelmistokehityksessä 8105200 5/5 8101 ServiceClient sisältää esimerkin xmlohj.properties ja proj.properties tiedostoista 8102 Huomaa korjata myös proj.properties- ja build.properties-tiedostot 8003 Harjoitus voidaan rakentaa hakemistoihin seuraavalla tavalla: 123456/ opiskelijanumero build.xml päätason käännösohjaustiedosto Harjoitus2/ ensimmäisen harjoituksen hakemisto build.xml harjoituksen käännösrakentaja 2.9 Palautus proj.properties configure.html.txt projektikohtaiset ominaisuudet dokumentti, joka kertoo mitä ominaisuuksia pitää määritellä, jotta käännös ja ajo onnistuisivat Client/ web/ web sovellus client/ asiakasohjelman toteutus Server/ server/ palvelimen toteutus Publisher/ common/ munomajokukirjasto.jar Hakemistopuuta saa muokata, mutta vähintään lihavoidut osiot pitää löytyä 9000 Palautus 9001 Palautuspaketti sisältää koko harjoitustyöhakemistopuun 9002 Palautuspaketti on jar-paketti 9003 Palautuspaketin nimi on muotoa: xmlohj_ht3_opikelijanumero_etunimisukunimi.jar 9004 Palautetaan vain lähdekoodi ja lisäkirjastot, jotka eivät kuulu oletusympäristöön Eli aja clean ennen pakkausta