Commit 63c74257 by Patryk Czarnik

Dodatkowe metody ze sleepem

parent a930bf1f
......@@ -13,9 +13,10 @@ import java.util.concurrent.ExecutionException;
public class Async1 {
static final String trescXML = """
<o:readOne xmlns:o="http://soap.ogloszenia/">
<id>1</id>
</o:readOne>""";
<o:poczekaj xmlns:o="http://soap.ogloszenia/">
<imie>Patryk</imie>
<czas>3500</czas>
</o:poczekaj>""";
public static void main(String[] args) {
System.out.println("Startujemy...");
......
......@@ -13,9 +13,10 @@ import java.util.concurrent.ExecutionException;
public class Async2 {
static final String trescXML = """
<o:readOne xmlns:o="http://soap.ogloszenia/">
<id>1</id>
</o:readOne>""";
<o:poczekaj xmlns:o="http://soap.ogloszenia/">
<imie>Patryk</imie>
<czas>3500</czas>
</o:poczekaj>""";
public static void main(String[] args) {
System.out.println("Startujemy...");
......@@ -43,7 +44,7 @@ public class Async2 {
});
System.out.println("Zapytanie zlecone");
System.out.println("lalalala, robię inne rzeczy");
utils.czekaj(1000);
utils.czekaj(5000);
System.out.println("Koniec programu");
}
}
package ogloszenia.soap;
import jakarta.jws.Oneway;
import jakarta.jws.WebParam;
import jakarta.jws.WebResult;
import jakarta.jws.WebService;
......@@ -16,11 +17,16 @@ import java.math.BigDecimal;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@WebService
@MTOM
public class Ogloszenia {
// Gdy operacje webserwisu modyfikują wspólną strukturę danych, to trzeba zadbać o jej synchronizację.
private final List<String> imiona = Collections.synchronizedList(new ArrayList<>());
// dla słownika warto użyć ConcurrentHashMap
@WebResult(name="ogloszenie")
public List<OgloszenieSamochodowe> readAll() throws BladBazyDanych {
......@@ -88,4 +94,35 @@ public class Ogloszenia {
throw new NieznanyRekord("Brak zdjęcia dla ogłoszenia nr " + idOgloszenia);
}
}
public String poczekaj(
@WebParam(name="imie") String imie,
@WebParam(name="czas") long czas) {
System.out.println("poczekaj początek");
try {
Thread.sleep(czas);
} catch (InterruptedException e) {
}
System.out.println("poczekaj koniec");
return "Koniec czekania, pozdrawiam " + imie;
}
@Oneway
public void dodajImie(@WebParam(name="imie") String imie) {
try {
Thread.sleep(500);
// celowo opóźniam działanie, aby pokazać różnicę w działaniu z @Oneway i bez
// @Oneway powoduje, że po odebraniu zapytania klient i serwer rozłączają się,
// serwer nie odsyła żadnego XML-a w odpowiedzi, a klient nie czeka na nią
} catch (InterruptedException e) {
}
imiona.add(imie);
}
@WebResult(name="imiona")
public String pobierzImiona() {
synchronized(imiona) {
return String.join(", ", imiona);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment