Materijali vezani uz predavanja o Springu za rad na preddiplomskom projektu na FER-u.
Video predavanja uz ove materijale su na https://www.youtube.com/playlist?list=PLy0T81VDh93YLJEEe5AxydDlXxUPrPs_B
U Srcu razvijamo, održavamo i dajemo podršku za veliki broj sustava, gdje se svaki sastoji od niza servisa i aplikacija, broj aktivnih korisnika ide i preko 150.000 (uglavnom iz akademske zajednice), a ti sustavi rade na raznim platformama (Java, .Net, PHP, ...). Potrebe i želje korisnika za doradama, nadogradnjama i proširenjima sustava konstantno rastu kako rastu i sami sustavi. Kako bi i dalje uspješno pratili potrebe korisnika smatramo da nam treba Platform as a service (PaaS) kao temelj za daljnji razvoj i održavanje naših sustava. U prezentaciji je prezentirano u kojim segmentima rada nam PaaS može pomoći.
Projektna dokumentacija za Mob Ellposs, mobilni informacijski sustav za skladišno poslovanje. Mob Ellpos je zajedničko rješenje tvrtki KORIS d.o.o. i Ellabo d.o.o. te je u svakodnevnoj uporabi u skladišnom poslovanju Ellaba. Ova projektna dokumentacija je ogledni primjer kako KORIS d.o.o. "obavlja posao" projektiranja informacijskog sustava radi daljnjega razvoja. Dokumentacija se može smatrati kao jedan od isporučenih dokumenata - "deliverable" - prema TOGAF paradigmi. Po ovoj dokumentaciji razvijeno je mobilno rješenje za skladišno poslovanje temeljeno na Android aplikaciji, dotnet Core REST web-servisima i MSSQL bazi podataka.
U Srcu razvijamo, održavamo i dajemo podršku za veliki broj sustava, gdje se svaki sastoji od niza servisa i aplikacija, broj aktivnih korisnika ide i preko 150.000 (uglavnom iz akademske zajednice), a ti sustavi rade na raznim platformama (Java, .Net, PHP, ...). Potrebe i želje korisnika za doradama, nadogradnjama i proširenjima sustava konstantno rastu kako rastu i sami sustavi. Kako bi i dalje uspješno pratili potrebe korisnika smatramo da nam treba Platform as a service (PaaS) kao temelj za daljnji razvoj i održavanje naših sustava. U prezentaciji je prezentirano u kojim segmentima rada nam PaaS može pomoći.
Projektna dokumentacija za Mob Ellposs, mobilni informacijski sustav za skladišno poslovanje. Mob Ellpos je zajedničko rješenje tvrtki KORIS d.o.o. i Ellabo d.o.o. te je u svakodnevnoj uporabi u skladišnom poslovanju Ellaba. Ova projektna dokumentacija je ogledni primjer kako KORIS d.o.o. "obavlja posao" projektiranja informacijskog sustava radi daljnjega razvoja. Dokumentacija se može smatrati kao jedan od isporučenih dokumenata - "deliverable" - prema TOGAF paradigmi. Po ovoj dokumentaciji razvijeno je mobilno rješenje za skladišno poslovanje temeljeno na Android aplikaciji, dotnet Core REST web-servisima i MSSQL bazi podataka.
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
Kod izrade web projekta postoje razne mogućnosti odabira frameworka na kojem će se projekt bazirati. Mi smo odlučili izdvojili pet glavnih frameworka te oko njih izgraditi kvalitetnu panel diskusiju.
Vjerujemo da većina developera koji će sudjelovati na IT Showoff konferenciji su barem u jednom trenutku svoje karijere radili web site ili web aplikaciju na nekom od odabranih frameworka. Isto tako, vjerojatnost da su koristili, i temeljito isprobali sve njih, je vrlo mala. Zato nam je cilj putem kompetentnih stručnjaka pokušati publici prenijeti iskustva vezana za pojedine tehnologije, njihova osnovna svojstva, prednosti i mane.
Panelisti su svi od reda pravi majstori svog zanata, te će usporedno proći važna svojstva svakog frameworka i usporediti ga s drugima.
Kod mnogih tvrtki, priča počinje s iPhone aplikacijom. Obično su čuli da neka od konkurentskih tvrtki nudi to isto.
Primijetite da ovdje nije riječ o želji za mobilnom nego upravo o iPhone aplikaciji potpuno zanemarujući ostale mobilne platforme, poput rastućeg Androida
Koje su razlike u samim mobilnim platforma, sto je potrebn za razvoj, pogledajte u ovoj prezentaciji
Often, there is a difference of opinion between IT specialists who make business apps with databases in client-server architecture and those who skipped the client-server architecture altogether and began working on web applications. The former usually (but not always) tend to write their code in the database, while the latter consider the database a “black box”, which often serves only as a data container, while the business logic resides in the application server. There are a lot of other questions. The author thinks that specific needs require consideration. It is important to learn and think, and avoid being narrow-minded and accept a single “truth”. These questions will be considered through the Oracle ADF framework.
Zašto je REST stil programske arhitekture tako popularan za realizaciju otvorenih informacijskih sustava? Temeljem iskustava stečenih kroz implementaciju ISVU REST API-ja (https://www.isvu.hr/api/) pokazan je postupak kako se REST API može realizirati te na koje detalje treba posebno paziti.
Backend, MVC, languages and frameworks for BackendDragos Strugar
A presentation for Backend introduction, presented for Prnjavor Technology Enthusiasts in Prnjavor, Bosnia and Herzegovina. It is written in Serbian language and requires a Demo app written in Ruby on Rails.
Konferencija Javantura Zagreb 2014 by HUJAK
Vert.x – asinkroni, skalabilni i poliglotni framework nove generacije by Mihovil Rister
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Javantura, Zagreb, 2014.
Description and analysis of MEAN stack and underlying technologies (Mongo DB, Express, Angular and Node JS). Review of development tools & techniques. Performance, best practices. Common usage scenarios, pros and cons. How to use it, when to use it, when not to use it.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. Stipe Predanic
Predavanje iz Dinamičkih web aplikacija, 9. predavanje
Video: https://www.youtube.com/watch?v=NIMP-02mPvM&index=10&list=PLYqeapOP_CtS0kbdbo_GXFgnS81JGAd8L
Tema: Templete i framework (MVC)
Datum snimanja: 5.5.2016
Konferencija Javantura Zagreb 2014 by HUJAK
Java na klijentskoj strani – ima li budućnosti? by Ivan Vučak
U proteklih nekoliko godina Java se pozicionirala kao tehnologija izrade serverskih komponenti, ali kao da se zaboravlja da se Java koristila iza izradu Rich Internet aplikacija (RIA). Da li je Java konkurentna na području RIA te koliku ulogu u tome imaju razni sigurnosni standardi? Kako održavati postojeće RIA sustave uz općenito nepovjerenje ostalih sustava prema Java klijentskim aplikacijama? U ovom predavanju bavit ćemo se usporedbom Jave s ostalim tehnologijama te pokazati zašto strepimo kod svakog Java update-a.
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
Kod izrade web projekta postoje razne mogućnosti odabira frameworka na kojem će se projekt bazirati. Mi smo odlučili izdvojili pet glavnih frameworka te oko njih izgraditi kvalitetnu panel diskusiju.
Vjerujemo da većina developera koji će sudjelovati na IT Showoff konferenciji su barem u jednom trenutku svoje karijere radili web site ili web aplikaciju na nekom od odabranih frameworka. Isto tako, vjerojatnost da su koristili, i temeljito isprobali sve njih, je vrlo mala. Zato nam je cilj putem kompetentnih stručnjaka pokušati publici prenijeti iskustva vezana za pojedine tehnologije, njihova osnovna svojstva, prednosti i mane.
Panelisti su svi od reda pravi majstori svog zanata, te će usporedno proći važna svojstva svakog frameworka i usporediti ga s drugima.
Kod mnogih tvrtki, priča počinje s iPhone aplikacijom. Obično su čuli da neka od konkurentskih tvrtki nudi to isto.
Primijetite da ovdje nije riječ o želji za mobilnom nego upravo o iPhone aplikaciji potpuno zanemarujući ostale mobilne platforme, poput rastućeg Androida
Koje su razlike u samim mobilnim platforma, sto je potrebn za razvoj, pogledajte u ovoj prezentaciji
Often, there is a difference of opinion between IT specialists who make business apps with databases in client-server architecture and those who skipped the client-server architecture altogether and began working on web applications. The former usually (but not always) tend to write their code in the database, while the latter consider the database a “black box”, which often serves only as a data container, while the business logic resides in the application server. There are a lot of other questions. The author thinks that specific needs require consideration. It is important to learn and think, and avoid being narrow-minded and accept a single “truth”. These questions will be considered through the Oracle ADF framework.
Zašto je REST stil programske arhitekture tako popularan za realizaciju otvorenih informacijskih sustava? Temeljem iskustava stečenih kroz implementaciju ISVU REST API-ja (https://www.isvu.hr/api/) pokazan je postupak kako se REST API može realizirati te na koje detalje treba posebno paziti.
Backend, MVC, languages and frameworks for BackendDragos Strugar
A presentation for Backend introduction, presented for Prnjavor Technology Enthusiasts in Prnjavor, Bosnia and Herzegovina. It is written in Serbian language and requires a Demo app written in Ruby on Rails.
Konferencija Javantura Zagreb 2014 by HUJAK
Vert.x – asinkroni, skalabilni i poliglotni framework nove generacije by Mihovil Rister
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Javantura, Zagreb, 2014.
Description and analysis of MEAN stack and underlying technologies (Mongo DB, Express, Angular and Node JS). Review of development tools & techniques. Performance, best practices. Common usage scenarios, pros and cons. How to use it, when to use it, when not to use it.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. Stipe Predanic
Predavanje iz Dinamičkih web aplikacija, 9. predavanje
Video: https://www.youtube.com/watch?v=NIMP-02mPvM&index=10&list=PLYqeapOP_CtS0kbdbo_GXFgnS81JGAd8L
Tema: Templete i framework (MVC)
Datum snimanja: 5.5.2016
Konferencija Javantura Zagreb 2014 by HUJAK
Java na klijentskoj strani – ima li budućnosti? by Ivan Vučak
U proteklih nekoliko godina Java se pozicionirala kao tehnologija izrade serverskih komponenti, ali kao da se zaboravlja da se Java koristila iza izradu Rich Internet aplikacija (RIA). Da li je Java konkurentna na području RIA te koliku ulogu u tome imaju razni sigurnosni standardi? Kako održavati postojeće RIA sustave uz općenito nepovjerenje ostalih sustava prema Java klijentskim aplikacijama? U ovom predavanju bavit ćemo se usporedbom Jave s ostalim tehnologijama te pokazati zašto strepimo kod svakog Java update-a.
2. Zavod za telekomunikacije
Projekt
Creative Commons
■ slobodno smijete:
l dijeliti — umnožavati, distribuirati i javnosti priopćavati djelo
l remiksirati — prerađivati djelo
■ pod sljedećim uvjetima:
l imenovanje. Morate priznati i označiti autorstvo djela na način kako je
specificirao autor ili davatelj licence (ali ne način koji bi sugerirao da Vi ili
Vaše korištenje njegova djela imate njegovu izravnu podršku).
l nekomercijalno. Ovo djelo ne smijete koristiti u komercijalne svrhe.
l dijeli pod istim uvjetima. Ako ovo djelo izmijenite, preoblikujete ili
stvarate koristeći ga, preradu možete distribuirati samo pod licencom koja
je ista ili slična ovoj.
U slučaju daljnjeg korištenja ili distribuiranja morate drugima jasno dati do znanja licencne uvjete
ovog djela. Najbolji način da to učinite je linkom na ovu internetsku stranicu.
Od svakog od gornjih uvjeta moguće je odstupiti, ako dobijete dopuštenje nositelja autorskog prava.
Ništa u ovoj licenci ne narušava ili ograničava autorova moralna prava.
Tekst licencije preuzet je s http://creativecommons.org/.
&214.11.2018.
3. Zavod za telekomunikacije
Projekt
Sadržaj predavanja
♦ Gradle
♦ Spring
♦ Spring boot
♦ Povezivanje s bazom podataka (unutarnjom i vanjskom)
♦ Entiteti
♦ Spring Boot devtools
♦ HTTP
♦ REST
♦ Instaliranje na poslužitelj
&314.11.2018.
4. Zavod za telekomunikacije
Projekt
Gradle
♦ alat za izgradnju aplikacija i sustava poput: Maven, Ant, Make
! poslovi: compile, test, package, run, deploy, ...
♦ temelji se na jeziku Groovy
♦ koristi pakete koji se koriste u Mavenu
! http://search.maven.org
♦ lakše se proširuje nego Maven (može biti dobro ili loše)
♦ datoteka koja definira projekt: build.gradle
♦ obično se projekt distribuira sa alatom gradle i popratnim
skriptama
♦ potrebna mu je samo Java za izvršavanje
♦ adresa: http://gradle.org/
♦ Eclipse plugin - dolazi ugrađen
&414.11.2018.
5. Zavod za telekomunikacije
Projekt
Spring Framework - http://spring.io
♦ prva verzija 2003. koju je napravio Rod Johnson
♦ radni okvir za lakši razvoj aplikacija
♦ bavi se konfiguracijom objekata u sustavu (IoC – inversion of control)
! upravlja poslovnim objektima kao običnim objektima (POJO – plain old java
objects)
! brine se za kreiranje objekata
! povezuje kreirane objekte (IoC, wiring up, DI - dependency injection)
! upravlja njihovim životnim ciklusom
♦ složene veze između objekata se definiraju u XML-u ili pomoću
bilješki (annotation)
♦ odvaja poslovnu logiku od mehanizama za ispravan rad sustava
(transakcije, logiranje, ...)
♦ vrlo je složen za početnika jer ima puno stvari ugrađeno
&514.11.2018.
6. Zavod za telekomunikacije
Projekt
Mogućnosti Spring Frameworka
♦ POJO
♦ DI / AOP (Aspect Oriented Programming)
♦ logging
♦ timers, asynchronous calls
♦ lako testiranje
♦ Web MVC (Model View Controller) / REST
♦ ORM (Object Relational Mapping), JDBC, Hibernate, JDO
♦ sigurnost
♦ ...
&614.11.2018.
8. Zavod za telekomunikacije
Projekt
Projekti unutar spring.io
♦ Spring IO Platform
♦ Spring Boot
♦ Spring Framework
♦ Spring Cloud Data Flow
♦ Spring Cloud
♦ Spring Data
♦ Spring Integration
♦ Spring Security
♦ ...
&814.11.2018.
9. Zavod za telekomunikacije
Projekt
Spring Boot
♦ jedan od podprojekata Springa
! http://projects.spring.io/spring-boot/
♦ pojednostavnjuje korištenje Springa, pogotovo stvaranje novog projekta
♦ podržava:
! automatsku konfiguraciju
! pretraživanja klasa na putu (path)
♦ aplikacija ima manje koda
♦ kod web-aplikacija - omogućuje izradu samostalnih aplikacija
! web-poslužitelj zapakiran u jar
! jednostavnije instaliranje
! aplikacija spremna za produkcijsku okolinu
♦ primjeri projekata
♦ Spring framework guru tutorials
&914.11.2018.
10. Zavod za telekomunikacije
Projekt
Spring u Eclipseu
♦ Za Eclipse postoji plugin Spring Tools 4
♦ Instalacija
! instalirati STS preko Eclipse Marketplacea
♦ Trenutna verzija je STS 4.0.1
♦ Projekt možemo napraviti pomoću:
! File -> New -> Spring Starter Project ili
! napraviti projekt preko web-stranice http://start.spring.io
" pa onda napraviti import
&1014.11.2018.
11. Zavod za telekomunikacije
Projekt
Izrada jednostavnog projekta (1)
♦ otići na stranicu http://start.spring.io ili
♦ odabrati:
! Gradle project
! Spring Boot: 1.5.17
! Group: hr.fer.ilj.spring.example
! Artifact: simple
! klik na Generate Project - skinuti će se zip s projektom
♦ Eclipse:
! kopirati direktorij projekta u workspace
! File -> Import -> Gradle/Existing Gradle Project
! Root Folder staviti na odzipani projekt
! Next -> Next
! odabrati projekt
! klik na Finish
&1114.11.2018.
12. Zavod za telekomunikacije
Projekt
Izrada jednostavnog projekta (2)
♦ struktura projekta
♦ pogledati:
! SimpleApplication
" klasa koja se pokreće
! build.gradle
" skripta za "građenje"
! application.properties
" vanjska konfiguracija
&1214.11.2018.
13. Zavod za telekomunikacije
Projekt
Klasa SimpleApplication
package hr.fer.ilj.simple;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SimpleApplication {
public static void main(String[] args) {
SpringApplication.run(SimpleApplication.class, args);
}
}
&1314.11.2018.
14. Zavod za telekomunikacije
Projekt
SimpleApplication - pokretanje
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SimpleApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(SimpleApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("**************");
}
}
&1414.11.2018.
15. Zavod za telekomunikacije
Projekt
Ispis svih beanova
@SpringBootApplication
public class SimpleApplication implements CommandLineRunner {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(
SimpleApplication.class, args);
for(String name: ctx.getBeanDefinitionNames())
System.out.println(name);
}
...
}
&1514.11.2018.
16. Zavod za telekomunikacije
Projekt
Beanovi i DI (Dependency Injection)
♦ Objekte koje stvara i s kojima upravalja Springov kontejner se zovu
beanovi
♦ DI - dependency injection
! objekti definiraju ovisnosti o drugim objektima
! mora imati ili: atribute, setere ili konstruktor kroz koji se ovisnosti postavljaju
! kontejner onda ubacuje ovisnosti kada stvara baenove
! koristi posebne metode za instanciranje i postavljanje ovisnih objekata da bi
objekti normalno funkcionirali
♦ doseg beanova - @Scope("tip")
! singleton (podrazumijevano) - jedna instanca u JVM-u
! prototip - novi objekt svaki put kada se zahtjeva bean
! zahtjev (request) - kod svakog zahtjeva se stvara novi bean
! sjednica (session) - za svakog korisnika jedan bean
! globalna sjednica - koristi se kod portleta
&1614.11.2018.
17. Zavod za telekomunikacije
Projekt
Ubrizgavanje beanova (1)
@SpringBootApplication
public class SimpleApplication implements CommandLineRunner {
...
@Override
public void run(String... args) throws Exception {
System.out.println("**************");
for(String name: ctx.getBeanDefinitionNames())
System.out.println(name);
}
}
&1714.11.2018.
18. Zavod za telekomunikacije
Projekt
Ubrizgavanje beanova (2)
1. preko atributa (field)
@Autowired
private ApplicationContext ctx;
2. preko konstruktora
private ApplicationContext ctx;
public SimpleApplication(ApplicationContext ctx) {
this.ctx = ctx;
}
3. preko setera
private ApplicationContext ctx;
@Autowired
public void setCtx(ApplicationContext ctx) {
this.ctx = ctx;
}
&1814.11.2018.
19. Zavod za telekomunikacije
Projekt
Definiranje beanova
♦ dva načina:
! u konfiguracijskoj klasi (npr. SimpleApplication) definirati metodu
koja je označena da vraća bean (@Bean)
! označiti klasu s @Component
" mehanizam pretraživanja puta može pronaći takvu klasu
" podvrste:
# @Controller - predstavlja kontroler u Web MVC-u
# @Service - predstavlja namjeru da je to usluga
# @Repository - predstavlja komponentu koja pristupa podacima
# @RestController - predstavlja kontroler u Web MVC-u koja vraća podatke
koji se serializiraju u JSON ili XML
&1914.11.2018.
21. Zavod za telekomunikacije
Projekt
GreetingService - ubrizgavanje
@SpringBootApplication
public class SimpleApplication implements CommandLineRunner {
private GreetingService greetingService;
@Autowired
public void setGreetingService(GreetingService greetingService) {
this.greetingService = greetingService;
}
@Override
public void run(String... args) throws Exception {
System.out.println("**************");
System.out.println(greetingService.hello());
}
...
}
&2114.11.2018.
22. Zavod za telekomunikacije
Projekt
Bean GreetingService definiran u konfiguraciji
@SpringBootApplication
public class SimpleApplication implements CommandLineRunner {
...
@Bean
public GreetingService getService() {
return new GreetingService();
}
}
public class GreetingService {
public String hello() {
return "Bok!";
}
}
&2214.11.2018.
23. Zavod za telekomunikacije
Projekt
Bean GreetingService definiran u klasi
@Service
public class GreetingService {
public String hello() {
return "Bok!";
}
}
&2314.11.2018.
24. Zavod za telekomunikacije
Projekt
SimpleApplication - loading configuration
package hr.fer.tel.spring.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SimpleApplication implements CommandLineRunner {
@Autowired
private MyProps props;
public static void main(String[] args) {
SpringApplication.run(SimpleApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("*********** " + props.getText());
}
}
&2414.11.2018.
25. Zavod za telekomunikacije
Projekt
My Properties
package hr.fer.tel.spring.example;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class MyProps {
@Value("${prop.name}")
private String someText;
public String getText() {
return someText;
}
}
&2514.11.2018.
28. Zavod za telekomunikacije
Projekt
Protokol Hypertext Transfer Protocol (HTTP)
♦ internetski protokol aplikacijskog sloja
♦ definira format i način razmjene poruka
! tekstualan zapis, sličan formatu e-mail poruke i standarda MIME
♦ vrste poruka:
! zahtjev (“metoda”)
" definira operaciju (metodu), resurs, protokol
" naziv "metoda" potječe područja objektno-orijentiranog programiranja
! odgovor (rezultat)
" rezultat (uspjeh, neuspjeh, greška,...) opisan statusnim kôdom
" neke vrste odgovora u tijelu imaju sadržaj zatraženog resursa
&2814.11.2018.
29. Zavod za telekomunikacije
Projekt
Primjer HTTP-zahtjeva
1.GET /predmet/rassus HTTP/1.1
2.Host: www.fer.unizg.hr
3.User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:
7.0.1) Gecko/20100101 Firefox/7.0.1
4.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
5.Accept-Language: hr,en;q=0.7,en-us;q=0.3
6.Accept-Encoding: gzip, deflate
7.Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
8.Connection: keep-alive
9.Cache-Control: max-age=0
&2914.11.2018.
30. Zavod za telekomunikacije
Projekt
Primjer HTTP-zahtjeva
1.GET /predmet/rassus HTTP/1.1
2.Host: www.fer.unizg.hr
3.User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:
7.0.1) Gecko/20100101 Firefox/7.0.1
4.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
5.Accept-Language: hr,en;q=0.7,en-us;q=0.3
6.Accept-Encoding: gzip, deflate
7.Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
8.Connection: keep-alive
9.Cache-Control: max-age=0
&2914.11.2018.
početni redak
31. Zavod za telekomunikacije
Projekt
Primjer HTTP-zahtjeva
1.GET /predmet/rassus HTTP/1.1
2.Host: www.fer.unizg.hr
3.User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:
7.0.1) Gecko/20100101 Firefox/7.0.1
4.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
5.Accept-Language: hr,en;q=0.7,en-us;q=0.3
6.Accept-Encoding: gzip, deflate
7.Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
8.Connection: keep-alive
9.Cache-Control: max-age=0
&2914.11.2018.
početni redak
polja zaglavlja:
opća zaglavlja
zaglavlja karakteristična za zahtjev ili odgovor
zaglavlja karakteristična za entitet
32. Zavod za telekomunikacije
Projekt
Primjer HTTP-zahtjeva
1.GET /predmet/rassus HTTP/1.1
2.Host: www.fer.unizg.hr
3.User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:
7.0.1) Gecko/20100101 Firefox/7.0.1
4.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
5.Accept-Language: hr,en;q=0.7,en-us;q=0.3
6.Accept-Encoding: gzip, deflate
7.Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
8.Connection: keep-alive
9.Cache-Control: max-age=0
&2914.11.2018.
početni redak
polja zaglavlja:
opća zaglavlja
zaglavlja karakteristična za zahtjev ili odgovor
zaglavlja karakteristična za entitet
prazan redak
33. Zavod za telekomunikacije
Projekt
Primjer HTTP-zahtjeva
1.GET /predmet/rassus HTTP/1.1
2.Host: www.fer.unizg.hr
3.User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:
7.0.1) Gecko/20100101 Firefox/7.0.1
4.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
5.Accept-Language: hr,en;q=0.7,en-us;q=0.3
6.Accept-Encoding: gzip, deflate
7.Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
8.Connection: keep-alive
9.Cache-Control: max-age=0
&2914.11.2018.
početni redak
polja zaglavlja:
opća zaglavlja
zaglavlja karakteristična za zahtjev ili odgovor
zaglavlja karakteristična za entitet
prazan redak
tijelo poruke
34. Zavod za telekomunikacije
Projekt
Primjer HTTP-zahtjeva
1.GET /predmet/rassus HTTP/1.1
2.Host: www.fer.unizg.hr
3.User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:
7.0.1) Gecko/20100101 Firefox/7.0.1
4.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
5.Accept-Language: hr,en;q=0.7,en-us;q=0.3
6.Accept-Encoding: gzip, deflate
7.Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
8.Connection: keep-alive
9.Cache-Control: max-age=0
&3014.11.2018.
35. Zavod za telekomunikacije
Projekt
Primjer HTTP-zahtjeva
1.GET /predmet/rassus HTTP/1.1
2.Host: www.fer.unizg.hr
3.User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:
7.0.1) Gecko/20100101 Firefox/7.0.1
4.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
5.Accept-Language: hr,en;q=0.7,en-us;q=0.3
6.Accept-Encoding: gzip, deflate
7.Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
8.Connection: keep-alive
9.Cache-Control: max-age=0
&3014.11.2018.
Obavezni dijelovi
36. Zavod za telekomunikacije
Projekt
Metode zahtjeva
♦ metoda zahtjeva određuje što se traži od resursa
♦ HTTP/1.1 definira 8 metoda i omogućuje dodavanje novih
metoda (extensions):
! OPTIONS - informiranje i mogućnostima resursa i poslužitelja
! GET - za dohvaćanje resursa (najčešća)
! HEAD - za dohvaćanje podataka o resursu (npr. veličina,
postojanje)
! POST - aktiviranje resursa (npr. slanje podataka obrazaca)
! PUT - postavljanje entiteta (npr. promjena podataka - kod
REST-a)
! DELETE - brisanje resursa (npr. kod REST-a)
! TRACE - za dijagnostiku
! CONNECT - za buduću uporabu (ne implementira se)
&3114.11.2018.
37. Zavod za telekomunikacije
Projekt
Primjer HTTP-odgovora
1.HTTP/1.1 200 OK
2.Date: Wed, 12 Oct 2011 08:19:32 GMT
3.Server: Apache/2.2.20 (FreeBSD) mod_ssl/2.2.20 OpenSSL/0.9.8q mod_fcgid/
2.3.6
4.Expires: Thu, 19 Nov 1981 08:52:00 GMT
5.Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-
check=0
6.Pragma: no-cache
7.P3P: CP="NOI CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa HISa OTPa OUR BUS IND
UNI COM NAV INT"
8.Set-Cookie: CMS=2p72ge55hqm92itadsfu83pc25; expires=Wed, 19-Oct-2011
20:19:32 GMT; path=/; domain=www.fer.unizg.hr; HttpOnly
9.Vary: Accept-Encoding
10.Transfer-Encoding: chunked
11.Content-Type: text/html; charset=utf-8
12.
13.d9e7
14.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
15.<html xmlns="http://www.w3.org/1999/xhtml">
16.
17.<head>
18.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
19. ...
&3214.11.2018.
38. Zavod za telekomunikacije
Projekt
Primjer HTTP-odgovora
1.HTTP/1.1 200 OK
2.Date: Wed, 12 Oct 2011 08:19:32 GMT
3.Server: Apache/2.2.20 (FreeBSD) mod_ssl/2.2.20 OpenSSL/0.9.8q mod_fcgid/
2.3.6
4.Expires: Thu, 19 Nov 1981 08:52:00 GMT
5.Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-
check=0
6.Pragma: no-cache
7.P3P: CP="NOI CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa HISa OTPa OUR BUS IND
UNI COM NAV INT"
8.Set-Cookie: CMS=2p72ge55hqm92itadsfu83pc25; expires=Wed, 19-Oct-2011
20:19:32 GMT; path=/; domain=www.fer.unizg.hr; HttpOnly
9.Vary: Accept-Encoding
10.Transfer-Encoding: chunked
11.Content-Type: text/html; charset=utf-8
12.
13.d9e7
14.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
15.<html xmlns="http://www.w3.org/1999/xhtml">
16.
17.<head>
18.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
19. ...
&3214.11.2018.
početni redak
39. Zavod za telekomunikacije
Projekt
Primjer HTTP-odgovora
1.HTTP/1.1 200 OK
2.Date: Wed, 12 Oct 2011 08:19:32 GMT
3.Server: Apache/2.2.20 (FreeBSD) mod_ssl/2.2.20 OpenSSL/0.9.8q mod_fcgid/
2.3.6
4.Expires: Thu, 19 Nov 1981 08:52:00 GMT
5.Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-
check=0
6.Pragma: no-cache
7.P3P: CP="NOI CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa HISa OTPa OUR BUS IND
UNI COM NAV INT"
8.Set-Cookie: CMS=2p72ge55hqm92itadsfu83pc25; expires=Wed, 19-Oct-2011
20:19:32 GMT; path=/; domain=www.fer.unizg.hr; HttpOnly
9.Vary: Accept-Encoding
10.Transfer-Encoding: chunked
11.Content-Type: text/html; charset=utf-8
12.
13.d9e7
14.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
15.<html xmlns="http://www.w3.org/1999/xhtml">
16.
17.<head>
18.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
19. ...
&3214.11.2018.
početni redak
polja zaglavlja:
opća zaglavlja
zaglavlja karakteristična za zahtjev ili odgovor
zaglavlja karakteristična za entitet
40. Zavod za telekomunikacije
Projekt
Primjer HTTP-odgovora
1.HTTP/1.1 200 OK
2.Date: Wed, 12 Oct 2011 08:19:32 GMT
3.Server: Apache/2.2.20 (FreeBSD) mod_ssl/2.2.20 OpenSSL/0.9.8q mod_fcgid/
2.3.6
4.Expires: Thu, 19 Nov 1981 08:52:00 GMT
5.Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-
check=0
6.Pragma: no-cache
7.P3P: CP="NOI CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa HISa OTPa OUR BUS IND
UNI COM NAV INT"
8.Set-Cookie: CMS=2p72ge55hqm92itadsfu83pc25; expires=Wed, 19-Oct-2011
20:19:32 GMT; path=/; domain=www.fer.unizg.hr; HttpOnly
9.Vary: Accept-Encoding
10.Transfer-Encoding: chunked
11.Content-Type: text/html; charset=utf-8
12.
13.d9e7
14.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
15.<html xmlns="http://www.w3.org/1999/xhtml">
16.
17.<head>
18.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
19. ...
&3214.11.2018.
početni redak
polja zaglavlja:
opća zaglavlja
zaglavlja karakteristična za zahtjev ili odgovor
zaglavlja karakteristična za entitet
prazan redak
41. Zavod za telekomunikacije
Projekt
Primjer HTTP-odgovora
1.HTTP/1.1 200 OK
2.Date: Wed, 12 Oct 2011 08:19:32 GMT
3.Server: Apache/2.2.20 (FreeBSD) mod_ssl/2.2.20 OpenSSL/0.9.8q mod_fcgid/
2.3.6
4.Expires: Thu, 19 Nov 1981 08:52:00 GMT
5.Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-
check=0
6.Pragma: no-cache
7.P3P: CP="NOI CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa HISa OTPa OUR BUS IND
UNI COM NAV INT"
8.Set-Cookie: CMS=2p72ge55hqm92itadsfu83pc25; expires=Wed, 19-Oct-2011
20:19:32 GMT; path=/; domain=www.fer.unizg.hr; HttpOnly
9.Vary: Accept-Encoding
10.Transfer-Encoding: chunked
11.Content-Type: text/html; charset=utf-8
12.
13.d9e7
14.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
15.<html xmlns="http://www.w3.org/1999/xhtml">
16.
17.<head>
18.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
19. ...
&3214.11.2018.
početni redak
polja zaglavlja:
opća zaglavlja
zaglavlja karakteristična za zahtjev ili odgovor
zaglavlja karakteristična za entitet
prazan redak
tijelo poruke
42. Zavod za telekomunikacije
Projekt
HTTP-odgovor
♦ početni redak (protokol, statusni kod i opis)
! kategorije statusnih kodova:
" 1xx – Informativne - ni uspjeh, ni neuspjeh
" 2xx – Uspjeh - poslužitelj je primio, razumio i ispunio zahtjev
" 3xx – Preusmjeravanje - potrebno poduzeti dodatne akcije
" 4xx – Greška na klijentu - zahtjev je neispravan
" 5xx – Greška na poslužitelju - zahtjev je ispravan, ali ga poslužitelj ne
može ispuniti
♦ u tijelu odgovora se obično prenosi reprezentacija resursa
(“entitet”) koju preglednik treba prikazati korisniku (npr.
HTML)
♦ primjer nekih polja zaglavlja:
! Content-Type: format entiteta
! Content-Length: duljina entiteta u tijelu (u oktetima)
&3314.11.2018.
43. Zavod za telekomunikacije
Projekt
Primjer: sensors
♦ popis očitanja senzora
♦ inicijalizacija iz datoteke i spremanje u bazu
! podaci:
" Temperature, Pressure, Humidity, CO, NO2, SO2
" datoteka CSV - biblioteka OpenCSV - Tutorial
♦ prikaz u JSON-u (REST)
! uređivanje (dodavanje, promjena, brisanje) podataka
&3414.11.2018.
44. Zavod za telekomunikacije
Projekt
Spring Boot DevTools
♦ Kod razvoja ubrzavaju ponovno učitavanje resursa i klasa
! dodati knjižnicu u build.gradle:
compile('org.springframework.boot:spring-boot-devtools')
♦ Kada se program prevede ponovno se učitaju klase na
poslužitelju
♦ Ponovno učitavanje resursa iz preglednika
! treba instalirati plugin u preglednik: http://livereload.com/extensions/
♦ više na: https://spring.io/blog/2015/06/17/devtools-in-spring-
boot-1-3
&3514.11.2018.
45. Zavod za telekomunikacije
Projekt
Stvaranje Spring projekta
♦ otvoriti stranicu https://start.spring.io
♦ klik na "Switch to the full version"
♦ odabrati: Gradle Project
♦ popuniti:
! Group: hr.fer.spring
! Artifact: sensors
! Name: sensors
! Packaging: Jar
! Java Version: 1.8
! Language: Java
! odabrati: Web, JPA, H2, Actuator, DevTools
! klik na Generate Project
! Eclipse -> import Gradle project
&3614.11.2018.
46. Zavod za telekomunikacije
Projekt
Učitavanje podataka iz datoteke (1)
public class SensorReading {
private String temperature, pressure, humidity, co, no2, so2;
// konstruktori: bez argumenata
// set, get metode
// toString
}
&3714.11.2018.
47. Zavod za telekomunikacije
Projekt
Učitavanje podataka iz datoteke (2)
@SpringBootApplication
public class SensorsApplication implements CommandLineRunner {
...
@Override
public void run(String... args) throws Exception {
List<SensorReading> readings = loadData();
readings.stream().forEach(System.out::println);
}
private List<SensorReading> loadData() throws Exception {
String fileName = "mjerenja.csv";
return new CsvToBeanBuilder<SensorReading>(
new FileReader(fileName))
.withType(SensorReading.class).build().parse();
}
}
&3814.11.2018.
49. Zavod za telekomunikacije
Projekt
Java Persistence API - JPA
♦ specifikacija JPA 2.0 - JSR 317
♦ omogućuje programeru preslikavanje, spremanje promjenu i
dohvaćanje podataka iz/u objekata u/iz bazu/e podataka
♦ popularne implementacije:
! Hibernate (podrazumijevano se koristi u Springu)
! EclipseLink - referentna implementacija
! Apache OpenJPA
♦ entitet je klasa koja se može spremiti u bazu podataka
! mora biti označena bilješkom
♦ koristi se Java Persistence Query Language (JPQL)
! sličan SQL-u
&4014.11.2018.
50. Zavod za telekomunikacije
Projekt
Bilješke (javax.persistence) - tutorial
♦ atributi ili metode get/set
" Ne smije se miješati označavanje atributa i metoda. Treba odabrati samo jedan način u jednoj klasi.
! @Column (name="newColumnName") - označavanje kolone
! @Id - jedinstveni identifikator
! @GeneratedValue - zajedno s @Id označava da je vrijednost generirana automatski
! @Transient - atribut neće biti spremljen u bazu
! @NotNull - ne smije biti null
! @ElementCollection(fetch=EAGER ili LAZY) - označava kolekcije
♦ klasa
! @Entity - označava da je klase entitet koji se preslikava
♦ relacije
! @OneToOne(mappedBy="attributeOfTheOwningClass")
! @OneToMany(mappedBy="attributeOfTheOwningClass")
! @ManyToOne
! @ManyToMany
&4114.11.2018.
51. Zavod za telekomunikacije
Projekt
Klasa SensorReading - entitet
@Entity
public class SensorReading {
@Id
private Integer id;
private String temperature, pressure, humidity, co, no2, so2;
...
}
&4214.11.2018.
52. Zavod za telekomunikacije
Projekt
Klasa PersonRepository
// Person je objekt, a Long je ključ
public interface SensorRepository extends
JpaRepository<SensorReading, Long> {
}
&4314.11.2018.
53. Zavod za telekomunikacije
Projekt
Spremanje podataka
@SpringBootApplication
public class SensorsApplication implements CommandLineRunner {
@Autowired
SensorRepository repo;
...
@Override
public void run(String... args) throws Exception {
List<SensorReading> readings = loadData();
// prepare data for saving
int i = 0;
for(SensorReading reading: readings) {
reading.setId(i++);
}
repo.save(readings);
readings.stream().forEach(System.out::println);
}
...
&4414.11.2018.
54. Zavod za telekomunikacije
Projekt
H2 konzola
♦ na poveznici http://localhost:8080/h2-console
! imamo konzolu za pregledavanje baze podataka
! spajamo se na: jdbc:h2:mem:testdb
&4514.11.2018.
55. Zavod za telekomunikacije
Projekt
Eksterna baza podataka - postgres
♦ pokrenuti bazu i pomoću pgAdmina stvoriti bazu s imenom
sensors
♦ u gradle.build zamijeniti H2 s PostreSQL-om
...
dependencies {
...
//runtime('com.h2database:h2')
runtime('org.postgresql:postgresql')
}
...
♦ u application.properties dodati
spring.datasource.url= jdbc:postgresql://localhost:5432/sensors
spring.datasource.username=postgres
spring.datasource.password=
# none, validate, update, create, create-drop
spring.jpa.hibernate.ddl-auto=create
&4614.11.2018.
57. Zavod za telekomunikacije
Projekt
Web-usluge temeljene prijenosu prikaza stanja resursa (REST)
♦ REST (Representational State Transfer)
♦ pojmovi: The REST Way ili RESTful services
♦ pojam je skovao Roy Fielding u svojoj doktorskoj disertaciji
♦ nije standard već arhitekturni stil
♦ sve se temelji na resursima koji su predstavljeni URL-ovima:
➡ http://localhost:8080/persons - popis svih korisnika
➡ http://localhost:8080/persons/1 - korisnik s identifikatorom 1
♦ koristi protokol: HTTP (GET, POST, PUT, DELETE, PATCH)
♦ koristi podatke: JSON, XML, sirovi (npr. za slike, video)
♦ bez stanja (stateless), priručni spremnik (cache)
&4814.11.2018.
58. Zavod za telekomunikacije
Projekt
Arhitektura web-aplikacije (REST)
&4914.11.2018.
sloj pristupa
podacima
sloj poslovne
logike
@Service
:PersonService
repository
:PersonRepository
4: dohvaća i
sprema
podatke
@Entity
:Person
sloj usluge
web-poslužitelj (REST)
1: HTTP
zahtjev
2: obradi(HttpRequest)
7: HTTP
odgovor
@RestController
:PersonResource
3: poziva
Jackson
mapping
5:proslijediobradu
(PersonRepresentation)
6: JSON
ili XML
Person
Representation
@Entity
:Person
59. Zavod za telekomunikacije
Projekt
Format JSON (Javascript Object Notation)
♦ podatak - par: ime/vrijednost
"firstName":"Pero"
! vrijednosti mogu biti:
" broj, string, boolean (true, false), polje, objekt, null
♦ objekt su parovi u vitičastim zagradama, npr.:
{ "firstName" : "Pero", "lastName" : "Perić" }
! ime u objektu mora biti jedinstveno
♦ polje su vrijednosti u uglatim zagradama, npr.:
[ { "name": "Pero Perić", ... },
{ "name": "Iva Ivić", ... },
...]
&5014.11.2018.
60. Zavod za telekomunikacije
Projekt
Primjer zahtjeva i odgovora
• HTTP GET http://localhost:8080/currentReading
{
"id": 82,
"temperature": "21",
"pressure": "995",
"humidity": "64",
"co": "187",
"no2": "",
"so2": "0"
}
&5114.11.2018.
61. Zavod za telekomunikacije
Projekt
Primjer REST kontrolera
@RestController
public class SensorReadingController {
private SensorRepository repo;
public SensorReadingController(SensorRepository repo) {
this.repo = repo;
}
@GetMapping("/currentReading")
public SensorReading currentReading() {
LocalTime time = LocalTime.now();
int id = time.getHour() * 4 + time.getMinute() / 15;
return repo.findOne(id);
}
}
&5214.11.2018.
62. Zavod za telekomunikacije
Projekt
Tipično korištenje usluga REST
♦ za Create, Read, Update and Delete (CRUD)
♦ primjer gotove usluge: Twitter
&5314.11.2018.
HTTP CRUD
POST Create, (Overwrite/Replace)
GET Read
PUT Update, (Create, Delete)
DELETE Delete
PATCH Partial update
63. Zavod za telekomunikacije
Projekt
Primjer dohvaćanja
♦ Chrome extensions (https://chrome.google.com/webstore/search/rest):
! Advanced Rest Client ili
! Postman
♦ u terminalu:
! curl
! HTTPie
&5414.11.2018.
65. Zavod za telekomunikacije
Projekt
Instaliranje aplikacije na udaljenom računalu (1)
♦ Prevođenje Mavenom ili Gradleom rezultira izradom jara koji
u sebi ima sve ovisnosti
♦ Prenošenje jara na odredišno računalo
! Uobičajeno je da se prenosi pomoću ssh protokola
" Windows: WinSCP ili instaliranjem Windows Subsystem for Linux (WSL) -
video
" Linux/Unix: komanda scp
# scp [[user@]host1:]file1 ... [[user@]host2:]file2
♦ Spajanje pomoću SSH na poslužitelj:
" Windows: alat Putty
" Linux/Unix: komanda ssh
# ssh {user}@{host}
&5614.11.2018.
66. Zavod za telekomunikacije
Projekt
Instaliranje aplikacije na udaljenom računalu (2)
♦ Pokretanje poslužitelja
! Pokreće se s java -jar {datoteka}.jar
" Ako samo tako pokrenemo nakon odspajanja od poslužitelja taj proces će se
ugasiti pa je zato potrebno koristiti mehanizme koji će to spriječiti
! Korištenje alata screen - tutorial - shortcuts
" screen -S ime - pokretanje screena s imenom sjednice
" C-a d - odspajanje iz screena
" screen -ls - ispis sjednica
" screen -r ime - spajanje na postojeću sjednicu
" C-a c - stvaranje novog prozora u screenu
" C-a " - vizualno prebacivanje u novi prozor
" C-a ESC - micanje kursorom po prozoru screena, ENTER za izlazak
&5714.11.2018.