Commit 63c74257 by Patryk Czarnik

Dodatkowe metody ze sleepem

parent a930bf1f
...@@ -13,9 +13,10 @@ import java.util.concurrent.ExecutionException; ...@@ -13,9 +13,10 @@ import java.util.concurrent.ExecutionException;
public class Async1 { public class Async1 {
static final String trescXML = """ static final String trescXML = """
<o:readOne xmlns:o="http://soap.ogloszenia/"> <o:poczekaj xmlns:o="http://soap.ogloszenia/">
<id>1</id> <imie>Patryk</imie>
</o:readOne>"""; <czas>3500</czas>
</o:poczekaj>""";
public static void main(String[] args) { public static void main(String[] args) {
System.out.println("Startujemy..."); System.out.println("Startujemy...");
......
...@@ -13,9 +13,10 @@ import java.util.concurrent.ExecutionException; ...@@ -13,9 +13,10 @@ import java.util.concurrent.ExecutionException;
public class Async2 { public class Async2 {
static final String trescXML = """ static final String trescXML = """
<o:readOne xmlns:o="http://soap.ogloszenia/"> <o:poczekaj xmlns:o="http://soap.ogloszenia/">
<id>1</id> <imie>Patryk</imie>
</o:readOne>"""; <czas>3500</czas>
</o:poczekaj>""";
public static void main(String[] args) { public static void main(String[] args) {
System.out.println("Startujemy..."); System.out.println("Startujemy...");
...@@ -43,7 +44,7 @@ public class Async2 { ...@@ -43,7 +44,7 @@ public class Async2 {
}); });
System.out.println("Zapytanie zlecone"); System.out.println("Zapytanie zlecone");
System.out.println("lalalala, robię inne rzeczy"); System.out.println("lalalala, robię inne rzeczy");
utils.czekaj(1000); utils.czekaj(5000);
System.out.println("Koniec programu"); System.out.println("Koniec programu");
} }
} }
package ogloszenia.soap; package ogloszenia.soap;
import jakarta.jws.Oneway;
import jakarta.jws.WebParam; import jakarta.jws.WebParam;
import jakarta.jws.WebResult; import jakarta.jws.WebResult;
import jakarta.jws.WebService; import jakarta.jws.WebService;
...@@ -16,11 +17,16 @@ import java.math.BigDecimal; ...@@ -16,11 +17,16 @@ import java.math.BigDecimal;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
@WebService @WebService
@MTOM @MTOM
public class Ogloszenia { 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") @WebResult(name="ogloszenie")
public List<OgloszenieSamochodowe> readAll() throws BladBazyDanych { public List<OgloszenieSamochodowe> readAll() throws BladBazyDanych {
...@@ -88,4 +94,35 @@ public class Ogloszenia { ...@@ -88,4 +94,35 @@ public class Ogloszenia {
throw new NieznanyRekord("Brak zdjęcia dla ogłoszenia nr " + idOgloszenia); 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