Do niedawna nie miałem pojęcia o webservice’ach, wiedziałem że takie coś istnieje ale jak działa to była czarna magia. Ale teraz mogę się stać ekspertem z racji tego, że w pracy jeden projekt jest prawie skończony oparty na nich (implementacja klienta) i drugi też będę robił (strona serwera).
Czym są webservicy, jak sama nazwa wskazuje są to usługi sieciowe i dzielą się jak wspomniałem wyżej na implementację po stronie klienta i po stronie serwera. Aby wygenerować webserice jest potrzebny plik wsdl. Ma on strukturę xmlową i kilka chyba obowiązkowych węzłów:
- types
- message
- portType
- binding
- service
Aby wygenerować usługę lub klienta z wsdla moża użyć wbudowanego kreatora w eclipsie bądź skorzystać z narzędzia dostarczanego przez fundację apache w ich własnej implementacji ws Axis2 – wsdl2java. Osobiście nie polecam wizarda w eclipsie ponieważ jego działanie nie jest zbyt stabilne i trochę trzeba się namęczy. Wsdl2java i java2wsdl są prostymi konsolowymi aplikacjami o prostej składni. Również z kodu javy można wygenerować wsdl.
Zacznijmy może od usługi. Po wygenerowaniu w eclipsie usługi dostajemy kilka plików. W głównej mierze są to interfejsy, implementacje jakiś naszych typów zadeklarowanych w wsdl ale nas najbardziej będzie interesował plik z końcówką Impl od implementation. Są w nim metody naszego webservicu, które nie posiadają implementacji tylko zwracają jakieś wartości. Naszym zadaniem jest obudowanie ich i sprawienie aby wykonywały to co jest w założeniach projektu.
Strona klienta jest jeszcze prostsza. Szukamy w wygenerowanych plikach, jednego w którym nazwa zawiera słowo Locator. To się tyczy Axis 1. Tworzymy nową instancję tej klasy i poprzez tego lokatora łączymy się z ws. Pozostaje nam tylko wywołać metody z odpowiednimi parametrami chyba, że chcemy jakoś wykorzystać wartości zwracane przez te metody to wtedy tworzymy odpowiedni kod.