AS-116.3111 Teollisuuden tietojärjestelmät



Samankaltaiset tiedostot
Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Web Service asiakasohjelman luominen

Pedacode Pikaopas. Web-sovelluksen luominen

Valppaan asennus- ja käyttöohje

Eclipse 3.1 Pikaopas versio 1.0

Ennen varmenteen asennusta varmista seuraavat asiat:

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Ohje kehitysympäristöstä. Dokumentti: Ohje kehitysympäristöstä.doc Päiväys: Projekti : AgileElephant

Henkilö- ja koulutusrekisterin asennusohje

JUnit ja EasyMock (TilaustenKäsittely)

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Mathcad 14.0 Single User -asennus

TEHTÄVÄ 4: Microsoft Windows Deployment Services asennus ja hallinta

CLOUDBACKUP TSM varmistusohjelmiston asennus

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

Testivetoinen ohjelmistokehitys

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli

Pedacode Pikaopas. Tietokantaa hyödyntävän sovelluksen luominen

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

JAKELUPISTE KÄYTTÖOHJE 2/6

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Web Services tietokantaohjelmoinnin perusteet

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Olio-ohjelmointi Javalla

4. Luokan testaus ja käyttö olion kautta 4.1

P e d a c o d e ohjelmointikoulutus verkossa

Eclipse ja JUnit-ohjelmoijatestit

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Rajapinta (interface)

T&M Autori Versio Series 60 -puhelimiin

Metodien tekeminen Javalla

Listarakenne (ArrayList-luokka)

Paavo Räisänen. WampServer palvelimen asennus ja käyttö Eclipsen kanssa, sekä ensimmäinen FTP yhteys.

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Mathcad Flexnet lisenssipalvelimen asennus

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0

TIETOKONEYLIASENTAJAN ERIKOISAMMATTITUTKINTO

Sisältö. 2. Taulukot. Yleistä. Yleistä

17. Javan omat luokat 17.1

Työsähköpostin sisällön siirto uuteen postijärjestelmään

Harjoitus 3: Vaatimukset

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Aditro Tikon ostolaskujen käsittely versio 6.2.0

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Lumon tuotekirjaston asennusohje. Asennus- ja rekisteröintiohje

Mikä yhteyssuhde on?

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Viva-16. Käyttöohje Veikko Nokkala Suomen Videovalvonta.com

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

Javan asennus ja ohjeita ongelmatilanteisiin

Sisältö. 22. Taulukot. Yleistä. Yleistä

TIETOKONEYLIASENTAJAN ERIKOISAMMATTITUTKINTO

Visma Fivaldi. Ohjeet Java web startin ja HTML5-työkalun aktivointiin

Harjoitus 3 Antti Hartikainen

Visma Nova. Visma Nova ASP käyttö ja ohjeet

16. Javan omat luokat 16.1

17. Javan omat luokat 17.1

Office ohjelmiston asennusohje

Microsoft Visual Studio 2005

Visma Liikkuvan työn ratkaisut Päivitysohje. Pääkäyttäjän opas

Ohjelmoinnin jatkokurssi, kurssikoe

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

Office_365_loppukäyttäjän ohje Esa Väistö

sivu 1 Verkkopäätteen muuttaminen Anvian uuteen tekniikkaan Ohje käy seuraaviin verkkopäätteisiin

Ohjelmistopohjaisen lisenssin käyttö

Käyttäjäistunnon poistaminen Pervasive.SQL:stä

Poista tietokoneessa olevat Java ja asenna uusin Java-ohjelma

NAVITA BUDJETTIJÄRJESTELMÄN ENSIASENNUS TYÖASEMALLE

Päivitysohje Opus Dental

Mainosankkuri.fi-palvelun käyttöohjeita

1 Tehtävän kuvaus ja analysointi

Hakemistojen sisällöt säilötään linkitetyille listalle.

Visma Fivaldi selainohjeet Internet Explorer

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Uutiskirjesovelluksen käyttöohje

4 Google. Eetu Kahelin ja Kimi Syrjä DAT 17

Käyttöohje Planeetta Internet Oy

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Office 365 OneDrive Opiskelijan ohje 2017

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Ohjelmoinnin perusteet Y Python

Aditro Tikon ostolaskujen käsittely versio SP1

Sisällys Clerica Web-sovellusten käytön aloittaminen 2

Hälyri-tietojärjestelmä, Palvelinohjelmiston version asennusohje

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Tiedonsiirto helposti navetta-automaation ja tuotosseurannan välillä

Autentikoivan lähtevän postin palvelimen asetukset

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

Climecon MagiCADliitosohjelma

FipnPsPt-asennuspaketin sisältämät hakemistot ja tiedostot puretaan ja kopioidaan PrestaShopin modules-hakemiston alle.

F-Secure KEY salasanojenhallintaohjelman käyttöönotto PC -laitteella

Tikon Ostolaskujenkäsittely versio SP1

Sähköpostitilin luonti

WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen

Transkriptio:

AS-6.3 Teollisuuden tietojärjestelmät Kotitehtävä 7. Max 5 pistettä. Demo ja/tai 2..204 mennessä sähköpostitse olli.kilkki@aalto.fi. Neuvontaa saa samasta osoitteesta Aihe: Sisältö: Java web-sovelluspalvelun kehittäminen. Tehdään Web-sovelluspalvelu (SearchAssistant), joka suorittaa hakuja Dict.org sanakirjan Web Service-rajapintojen kautta o Kyseessä on näin Web-sovelluspalvelu, joka toimii myös asiakkaan roolissa. Työkalut: Harjoitustyökoneella tunnuksena on sukunimi ja salasanana opiskelijanumero (muistakaa vaihtaa salasana) Harjoituksessa käytetään avoimen lähdekoodin GlassFish-projektin tarjoamia JAX-WS (Java API for XML Web Services) työkaluja palvelun toteuttamiseen. JAX-WS on osa Oraclen Java EE alustaa ja tavallaan korvaa vanhemman JAX-RPC:n siirtymällä RPC-tyylisestä (Remote Procedure Call) lähestymisestä enemmän dokumentti- ja sanomapohjaisiin web-sovelluspalveluihin. Erilaisten käännös, generointi ym. tehtävien hallintaan käytetään Ant-työkalua (ant.apache.org) ja build-skriptejä. Ajonaikaisena J2EE säilönä web-sovelluspalveluille käytetään Glassfish J2EE sovelluspalvelinta. Java EE 7 SDK:n ja GlassFish-serverin voi ladata kotikoneelle osoitteista http://www.oracle.com/technetwork/java/javaee/downloads/index.html ja http://www.oracle.com/technetwork/java/javase/downloads/index.html. Harjoitustyökoneella ohjelmistot ovat valmiiksi asennettuna. Kehitysympäristönä käytetään Eclipse-kehitysympäristöä, jonka saa ladattua https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/lunar. Harjoitustyökoneella ohjelmisto on valmiiksi asennettuna (C:\eclipse) Harjoitus koostuu kolmesta osasta:. Tehdään staattinen asiakas Dict.org sanakirjapalvelulle ja muutetaan asiakas yleiskäyttöiseksi luokaksi DictionaryClient. (JAX-WS:llä voi luoda myös dynaamisia asiakkaita, joilla sitominen voidaan tehdä ajonaikaisesti.) Halutessasi voit tutustua sanakirjaan myös web-käyttöliittymän kautta osoitteessa http://www.dict.org. 2. Tehdään palvelu SearchAssistant, joka tarjoaa käyttäjäystävällisen getsimpledefinition()-metodin. SearchAssistant käyttää DictionaryClient asiakasta hakujen tekemiseen. Tässä tehtävä palvelu toimii ikään kuin kääreenä taustalla olevalle Dict.org sanakirjapalvelulle. 3. Tehdään yksinkertainen asiakas SearchAssistant-palvelun toiminnan kokeilemiseksi.

. DictionaryClientTester +main() Temporary classes for testing purposes. 3. SearchAssistantTester +main() 2. ISearchAssistant DictionaryClient +getworddefinition() +getdefinitionsarraylist() SearchAssistant +getsimpledefinition() SearchAssistant Dict.org WS interface http://services.aonaware.com/dictservice/ DictService.asmx?WSDL dictionaryservicestubs searchassistantstubs

Aluksi: Web-sovelluspalvelun tekemisessä JAX-WS:llä merkittävä osa työtä on valmiiden työkalujen käyttämistä web-sovelluspalvelurajapintoja vastaavien tynkäluokkien luontiin tai web-sovelluspalvelurajapintojen generointiin toteutuksen pohjalta. Tässä harjoituksessa näitä työkaluja käytetään ant-skriptin build.xml kautta, joka tässä annetaan kutakuinkin valmiina. JAX-WS:ään ja käytettäviin työkaluihin voi tutustua esim. GlassFish-projektin JAX-WS referenssitoteutuksen dokumentaation ja ohjeistuksen avulla osoitteessa https://jax-ws.java.net/. Pluginin asentaminen Jotta Eclipsessä voidaan luoda GlassFish-projekteja, on Eclipseen asennettava plugin sitä varten. Avaa Eclipse Marketplace valitsemalla Help->Eclipse Marketplace. Hae Marketplacesta plugineja kirjoittamalla Find-kenttään esimerkiksi Glassfish. Valitse listasta GlassFish Java EE Glassfish tools for Luna ja klikkaa Install. Asennus saattaa kestää jonkin aikaa ja voit joutua välillä hyväksymään sopimusehtoja yms. Ympäristön konfigurointi Koska tässä harjoituksessa käytetään ant-skriptejä mm. kääntämiseen, täytyy JDK:n (Java Development Kit) puolelta asettaa tools.jar käytettävän JRE:n (Java Runtime Environment) saataville. Se lisätään Eclipsen JRE-valikoimaan seuraavasti: Window -> Preferences, Java -> Installed JREs, painetaan Addpainiketta, valitaan Standard VM ja klikataan Next. JRE home-poluksi asetetaan C:\Program Files\Java\jdk.8.0_20 (tai muu hakemisto, mistä JDK löytyy). Tämän jälkeen painetaan Add External JARs.. -painiketta ja selataan jdk.8.0_20\lib\ ja lisätään tools.jar. (Sovellusta ajettaessa tulee huolehtia, että käytetään oikeaa ajoympäristöä ja tarvittaessa valita Run-kohdasta Java Application, jonka JREvälilehdeltä asetetaan kyseinen JRE. ) Lisäksi Glassfish täytyy lisätä palvelimiin Window->Preferences->Server->Runtime Environments alta. Add ja Glassfish 4.0, JDK:ksi jdk.8.0_20 ja kansioksi C:\Program Files\Java\glassfish4\glassfish tai muu hakemisto mistä glassfish löytyy. Osa, Asiakkaan tekeminen Dict.org sanakirjapalvelulle. Käynnistä Eclipse. Luo uusi Dynamic Web Project -projekti nimeltään SearchAssistant. Valitse Target Runtimeksi GlassFish Server 4.0 ja konfiguraatioksi Default Configuration for GlassFish 4.0. Projektin luonnin yhteydessä määrittele Glassfishille myös oikea juurihakemisto (harjoitustyökoneella C:\Program Files\Java\glassfish4\glassfish) tai luo uusi paikallinen serveri. 2. Ennen varsinaisen asiakkaan koodaamista on generoitava sen tarvitsemat tynkäluokat (stub) sanakirjapalvelun palvelukuvauksesta. Tutustu myös palvelukuvaukseen esim. selaimella (http://services.aonaware.com/dictservice/dictservice.asmx?wsdl). Generointi tapahtuu käyttäen JAX-WS:n wsimport työkalua. Generointia varten on luotu valmis ant-tehtävä build.xml tiedostoon. Kopio se projektin hakemistoon. Tutustu tiedoston sisältöön ja käy läpi eri vaiheet, jotka generointi pitää sisällään. Tutustu varsinkin parametreihin ja tehtävään, jossa sanakirjapalvelun tynkäluokat luodaan palvelukuvaukseen (WSDL) perustuen. 3. Seuraavaksi generoidaan tynkäluokat ajamalla generate-dictionary-stubs. Ant-tehtävän saa ajettua helposti valitsemalla Eclipsen outline-näkymästä hiiren oikealla painikkeella kyseisen tehtävän kohdalta Run As -> Ant Build ja valitsemalla Targets välilehdeltä generate-dictionary-stubs. 4. Onnistuneen operaation tuloksena Console-näkymään tulee lopuksi teksti BUILD SUCCESSFUL. Päivittämällä projektin sisällön Package Explorer-näkymästä, pitäisi Java Resources/src-kansion alle ilmestyä uusi pakkaus tynkäluokkineen. Silmäile syntyneitä uusia luokkia ja vertaa tarvittaessa sanakirjapalvelun WSDL-kuvaukseen. (Näkymän saa päivitettyä valitsemalla projektin kohdalta oikealla hiirinäppäimelllä avautuvasta valikosta Refresh.) 5. Luo seuraavaksi uusi luokka nimeltä DictionaryClient pakettiin aos.jws.dictionary. Lisää luokkaan DictService tyyppinen yksityinen jäsenmuuttuja dict, jonka instantioit rakentajassa. Lisää luokalle

myös toinen yksityinen jäsenmuuttuja DictServiceSoap nimeltä dictsoap ja lisää luokan rakentajaan myös: dict = new DictService(); // Alustaa palvelua vastaavan tyngän dictsoap = dict.getdictservicesoap(); // SOAP binding DictService tarjoaa muitakin tapoja palvelun kutsumiseen (HttpGet,HttpPost,Soap,Soap2), mutta tässä käytetään SOAP:ia. 6. Kirjoita sitten DictionaryClient-luokalle julkinen metodi getworddefinition(string word), joka hakee ja palauttaa sanakirjapalvelulta annetun parametrin mukaisen WordDefinition olion. return dictsoap.define(word); 7. Kokeillaan sanakirjapalvelun ja client-luokan toimintaa väliaikaisen testiluokan avulla. Luo main metodin sisältämä DictionaryClientTester luokka aos.jws.testers-pakkaukseen ja lisää luonnin yhteydessä valinta kohtaan public statid void main Luo main-metodin sisällä DictionaryClient-instanssi ja käytä sitä seuraavasti: DictionaryClient dc = new DictionaryClient(); String testword = "substitute"; WordDefinition worddefresult = dc.getworddefinition(testword); // returns original word passed and the number of definitions found System.out.println( "Dictionary returned "+ worddefresult.getdefinitions().getdefinition().size() + " definitions for word "+ worddefresult.getword() ); Voit ajaa DictionaryClientTester-sovellusta painamalla luokan kohdalla hiiren oikeaa painiketta ja valitsemalla Run As -> Java Application. Ajamalla Debug-tilassa (Debug As -> Java Application) voit lisäksi sopivan breakpointin asetettuasi tarkastella esim. DictionaryClient-oliolta ja sanakirjapalvelulta haun tuloksena saatua WordDefinition-oliota. 8. Seuraavaksi modifioidaan DictionaryClient-luokkaa yleiskäyttöisemmäksi lisäämällä helppokäyttöisempi getdefinitionsarraylist() -metodi määritelmien hakemiseen. Metodin paluuarvon tulee olla tyypiltään ArrayList<Definition> ja parametrina se ottaa merkkijonon word. return (ArrayList<Definition>) dictsoap.define(word).getdefinitions().getdefinition(); 9. Voit kokeilla uutta metodia DictionaryClientTester-luokalla vaikkapa seuraavasti: ArrayList<Definition> definitions = dc.getdefinitionsarraylist("substitute"); for(int i=0; i < definitions.size(); ++i ) { } System.out.println( "\n Definition by "+ definitions.get(i).getdictionary().getname()+": \n"+ definitions.get(i).getworddefinition() ); Osa 2, SearchAssistant web-sovelluspalvelun toteuttaminen. Web-sovelluspalvelussa hyödynnetään edellisessä vaiheessa luotua DictionaryClient-luokkaa, joka kapseloi Dict.org sanakirjapalvelun ja sen kutsumekanismin. Tässä osassa luotavan websovelluspalvelun on tarkoitus tarjota alkuperäistä Dict.org palvelua yksinkertaisempi palvelurajapinta.

2. Luo uusi rajapinta ISearchAssistant pakettiin aos.jws.service. Määritä rajapintaan seuraava metodi: public String getsimpledefinition(string word); 3. Luo tämän jälkeen rajapinnan toteuttava luokka SearchAssistant samaan pakkaukseen. getsimpledefinition()-metodissa yksinkertaisesti luo uusi DictionaryClient ja käytä sen tarjoamaa hakumetodia määritelmien hakemiseen. Palauta saadun ArrayListin ensimmäisestä alkiosta palvelun palauttama määritelmä seuraavasti: DictionaryClient dc = new DictionaryClient(); ArrayList<Definition> defs = dc.getdefinitionsarraylist(word); if( defs.size() > 0) { return defs.get(0).getworddefinition(); } else { return "no definition found"; } 4. Määritellään seuraavaksi SearchAssistant-luokka julkaistavaksi web-sovelluspalveluna lisäämällä luokan eteen annotaatio @WebService. Lisää tämän jälkeen kooditiedoston alkuun import javax.jws.webservice (josta kyseinen annotaatio löytyy) esim. hyväksymällä Eclipsen ehdottama korjausehdotus virheilmoituksesta. Näin annotoidun luokan jokaista julkista metodia vastaava web-sovelluspalvelumetodi luodaan palvelurajapintaan. Tässä harjoituksessa tämä annotaatio riittää, sillä tässä tapauksessa kaikki julkisest metodit julkaistaan automaattisesti ja käytössä on ainoastaan perustietotyyppejä parametreina ja paluuarvoina. 5. Sovelluksen siirto palvelimelle tapahtuu helpoiten valitsemalla projektin kohdalta oikealla hiirinäppäimellä avautuvasta valikosta Run As -> Run on Server -> GlassFish 4.0, muut asetukset oletusarvoilla, paitsi (harjoitustehtäväkoneella) Domain pathiksi pitää asettaa: C:\Users\<user>\domain. Mikäli sovelluspalvelin ei vielä ole käynnissä se käynnistyy ja sovellus siirretään palvelimelle ajoon. Eclipsen Servers-näkymästä voi seurata palvelimia ja siellä ajossa olevia sovelluksia. 6. Tutustu luotuun palvelukuvaukseen osoitteessa http://localhost:8080/searchassistant/searchassistantservice?wsdl. Voit myös kokeilla palvelimella ajossa olevaa web-sovelluspalvelua sen selaintestikäyttöliittymän avulla osoitteessa http://localhost:8080/searchassistant/searchassistantservice?tester. Osa 3, SearchAssistant palvelun toiminnallisuuden kokeilu. Tehdään vielä asiakas juuri luodulle ja käyttöönotetulle SearchAssistant-palvelulle sen nopeaksi testaamiseksi. 2. Kuten osassa, tarvittavat ant-tehtävät on annettu ant-skriptissä (generate-searchassistant-stub). Täydennä tehtävän parametreihin luomasi palvelun WSDL-palvelukuvauksen sijainti ja generoi tynkäluokat (muista päivittää projektipuu jos tynkäluokat eivät näy). 3. Tee uusi asiakasluokka palvelun kokeilemiseksi aot.jws.testers-pakkaukseen kuten osassa. Anna luokan nimeksi SearchAssistantServiceTester ja lisää main-metodiin: SearchAssistantService saservice = new SearchAssistantService(); SearchAssistant sa = saservice.getsearchassistantport(); System.out.println("Definition for substitute is "+ sa.getsimpledefinition("substitute")); 4. Aja testiluokka valitsemalla Run As -> Java Application