Serwis internetowy to usługa, która dostarcza metody usług dla swoich klientów przy użyciu paradygmat programowania REST lub protokołu SOAP do komunikacji. Istnieje kilka sposobów implementacji usługi sieciowej. Najprostszym sposobem napisania usługi internetowej byłoby napisanie klasy i dodanie do niej adnotacji @WebService
i @WebMethod
adnotacji z javax.jws
, a następnie uruchomienie jej z main
-method z:
Endpoint.publish("http://localhost:8089/myservice", new MyWebService());
W rezultacie możesz przeglądać WSDL pod zarejestrowanym adresem URL, a jeśli masz SoapUI lub innego klienta SOAP, możesz również przetestować i używać swojej usługi sieciowej.
Z drugiej strony serwlet jest używany do transportu żądań i odpowiedzi HTTP . Może być używany do pisania aplikacji internetowych z JSP i HTML lub do obsługi odpowiedzi XML i JSON (jak w usłudze RESTful) i oczywiście także do odbierania i zwracania wiadomości SOAP. Możesz myśleć o tym jako o jednej warstwie poniżej usług internetowych . Serwlety mają swój własny standard, którym jest obecnie specyfikacja serwletów Java w wersji 4.0
Bardziej kompleksowym i praktycznym podejściem jest napisanie usługi internetowej z frameworkiem i opublikowanie jej na serwerze aplikacji lub w kontenerze serwletów, takim jak Tomcat lub JBoss. W tym przypadku użyłbyś serwletu do obsługi transportu żądań HTTP, które przesyłają twoje komunikaty SOAP lub REST.
Aby napisać serwis WWW z technologią serwletów, możesz na przykład użyć JAX-WS (np. Dla SOAP). Aby napisać usługi RESTful, możesz użyć JAX-RS (z implementacją referencyjną to Jersey ) lub alternatywnie możesz użyć Spring WebMVC , ale o ile wiem, nie jest to głównym celem tego frameworka, a Jersey jest znacznie łatwiejszy w użyciu.
Odnośnie drugiego pytania: @Controller
Adnotacja jest adnotacją stereotypową specyficzną dla Springa, która mówi Springowi coś o tym, co ma robić twoja fasola. To, co dokładnie metoda kontrolera zwróci, zależy od faktycznej implementacji twoich metod, możesz skonfigurować Spring tak, aby zwracał zwykły tekst, HTML, JSON, XML, dane binarne lub cokolwiek chcesz.
Uwaga z boku, klasa, do której dodano adnotację, @Controller
nie jest jeszcze serwletem, to po prostu ziarno. Sposób korzystania z serwletów zależy głównie od używanej struktury. Na przykład, gdy używasz Springa, zadanie serwletu jest wykonywane przez Springs, DispatcherServlet
które z kolei przekazuje żądania do odpowiednich komponentów bean. Jeśli używasz Tomcata, możesz bezpośrednio pisać własne serwlety, po prostu tworząc podklasy javax.servlet.http.HttpServlet
klasy i nadpisując niezbędne metody, takie jak te, doGet
które odpowiadają na żądania HTTP GET z przeglądarki.