Home > Fragmenty szkoleń > Szkolenie Programowanie JavaEE, lab: Simple SOAP Web Service

Szkolenie Programowanie JavaEE, lab: Simple SOAP Web Service

JavaEE Lab: Simple SOAP Web Service

W tym ćwiczeniu stworzymy prostą usługę sieciową.

Kod usługi sieciowej

Napisanie usługi sieciowej jest całkiem proste, jeśli zamierzamy stworzyć strukturę usług internetowych zgodną z JSR-181. Wszystkie serwery Java EE 5 (i wyżej) obsługują tworzenie WS przy użyciu adnotacji Java. Dzięki temu możemy wskazać, że klasa POJO (Plain Old Java Object) jest usługą sieciową.

Rozpoczynamy nasze ćwiczenie tworząc za pomocą Net Beans szkielet aplikacji webowej o nazwie WebServices:

szkolenie JAVAEE

W gałęzi Source Packages tworzymy pakiet: com.example.ws, zaś w nim klasę POJO: Hello

szkolenie JAVAEE

Modyfikujemy kod klasy tak, aby wyglądał w sposób następujący:

import javax.jws.*;

 

@WebService

public class Hello {

 

                @WebMethod

                public String hello(String name) {

                                return „Hello, „ + name;

                }

}

Kompilujemy tak zmodyfikowaną aplikację i wdrażamy ją na serwer aplikacyjny.

Na serwerze Glassfish przetestować aplikację możemy korzystając z linka:

http://127.0.0.1:8080/WebServices/HelloService?Tester

WSDL znajdziemy pod adresem:

http://127.0.0.1:8080/WebServices/HelloService?wsdl

Zwróć uwagę na zastosowane adnotacje:

@WebService mówi JavaEE i serwerowi aplikacyjnemu, że klasa/obiekt jest to usługa sieciowa (domyślna nazwa to HelloService)

@WebMethod deklaruje, że poniższa metoda jest operacją usługi internetowej.

!!! Domyślnie, jeśli nie masz tej adnotacji, WSZYSTKIE METODY PUBLICZNE są ujawnione jako operacje.

Lab 2: Piszemy bardziej złożoną usługę internetową

W tym ćwiczeniu będziemy eksperymentować z różnymi typami danych zwracanymi z usługi sieciowej.

Inne typy danych

JAX-WS definiuje następujące proste typy danych Java do odpowiednika w schemacie XML:

szkolenie JAVAEE windroos

Dodatkowo tablice (Arrays) i obiekty (JavaBeans) są mapowane odpowiednio na xsd:complexType, składające się z kombinacji xsd:sequence i xsd:element.

Zobaczymy, jaki efekt w WebService ma zwrócenie prostej tablicy obiektów i bardziej złożonego typu, takiego jak JavaBean.

Tworzenie JavaBean

Utwórz javabean o nazwie HelloBean.  Powinno on mieć właściwości String name & int age.

Wskazówka:

  • utwórz klasę w pakiecie com.example.ws o nazwie HelloBean,
  • dodaj atrybut: private String name;
  • private int age;
  • wygeneruj gettery i settery

Tworzenie nowego Web Service

Nową usługę sieciową nazwiemy tym razem HelloComplex. Możemy ją stworzyć poprzez skopiowanie i modyfikację klasy Hello.java:

szkolenie JAVAEE

Po skompilowaniu nowej wersji aplikacji wdrażamy ją na serwer aplikacyjny i testujemy.

Zwróć uwagę na:

Lab 3: Tworzymy klienta usługi sieciowej

W ćwiczeniu stworzymy klienta ostatnio wdrożonego WebService. W tym celu przygotujemy nową aplikację webowa o nazwie WebServicesClient:

szkolenie JAVAEE

Po utworzeniu aplikacji generujemy klienta WebService (File -> New, w kategoriach wskazujemy Web Services, rodzaj pliku: Web Service Client)

szkolenie JAVAEE

Na kolejnym ekranie kreatora wskazujemy plik WSDL na którym chcemy bazować. W tym miejscu powinniśmy wskazać WSDL usługi, którą wdrożyliśmy na serwer w poprzednim ćwiczeniu.

W pole Package wpisujemy: com.example.ws.client

szkolenie JAVAEE

Rozwijamy drzewo naszej aplikacji w zakładce Projects i nawigujemy do elementu Generated Sources, który również rozwijajmy. Wyświetlamy zawartość klas HelloComplexService i HelloComplex.

kurs JAVAEE

Testujemy klienta WebService

Docelowym etapem naszego ćwiczenia jest przetestowanie klienta.

W tym celu tworzymy Servlet, który pozwoli nam przetestować wygenerowany kod i jednocześnie wyświetlić na stronie informacje pobierane ze zdalnej usługi.

Tworzymy klasę ClientServlet w pakiecie com.example.ws.client:

kurs JAVAEE

Klasę opatrujemy adnotację:

@WebServlet(urlPatterns = "/client/*")

Pamiętać musimy również, że każdy Servlet rozszerza klasę bazową HttpServlet.

Implementujemy również metodę doGet. Można wykorzystać tutaj wsparcie IDE. W body klasy ClientServlet klikamy prawy przycisk myszy i wybieramy opcję Insert Code, a następnie Override Method…:

kurs JAVAEE

W wyświetlonym oknie wskazujemy metodę doGet. Kod szablonu metody pojawi się w ciele klasy:

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

      super.doGet(req, resp);

//To change body of generated methods, choose Tools | Templates.

 

…….

Po więcej informacji zapraszamy na szkolenia.

Może Cię również zainteresować: