Ein Webdienst ist ein Dienst, der seinen Clients Dienstmethoden bereitstellt, die entweder das REST-Programmierparadigma oder das SOAP-Protokoll für die Kommunikation verwenden. Es gibt verschiedene Möglichkeiten, einen Webdienst zu implementieren. Die einfachste Möglichkeit , einen Web - Service zu schreiben wäre, eine Klasse zu schreiben und mit Anmerkungen versehen es mit den @WebService
und @WebMethod
Anmerkungen aus javax.jws
, und dann startet von einem main
-Methode mit:
Endpoint.publish("http://localhost:8089/myservice", new MyWebService());
Das Ergebnis ist, dass Sie die WSDL unter der registrierten URL anzeigen können. Wenn Sie über SoapUI oder einen anderen SOAP-Client verfügen, können Sie Ihren Webdienst auch testen und verwenden.
Ein Servlet hingegen wird zum Transportieren von HTTP- Anforderungen und -Antworten verwendet. Es kann verwendet werden, um eine Webanwendung mit JSPs und HTML zu schreiben oder um XML- und JSON-Antworten (wie in einem RESTful-Dienst) bereitzustellen und natürlich auch SOAP-Nachrichten zu empfangen und zurückzugeben. Sie können sich das als eine Ebene unter den Webdiensten vorstellen . Servlets haben ihren eigenen Standard, der derzeit die Java-Servlet-Spezifikation Version 4.0 ist
Ein umfassenderer und praktischerer Ansatz besteht darin, einen Webdienst mit einem Framework zu schreiben und auf einem Anwendungsserver oder Servlet-Container wie Tomcat oder JBoss zu veröffentlichen. In diesem Fall würden Sie ein Servlet verwenden, um den Transport der HTTP-Anforderungen zu handhaben, die Ihre SOAP- oder REST-Nachrichten übertragen.
Um einen Webdienst mit Servlet-Technologie zu schreiben, können Sie beispielsweise JAX-WS (z. B. für SOAP) verwenden. Um RESTful-Services zu schreiben, können Sie entweder JAX-RS (mit der Referenzimplementierung Jersey ) oder alternativ Spring WebMVC verwenden . Soweit ich weiß, ist dies jedoch nicht der Hauptzweck dieses Frameworks, und Jersey ist erheblich einfacher zu bedienen.
Zur zweiten Frage: Die @Controller
Annotation ist eine Spring- spezifische Stereotyp-Annotation, die Spring etwas darüber sagt, was Ihre Bohne tun soll. Was genau eine Methode eines Controllers zurückgibt, hängt von der tatsächlichen Implementierung Ihrer Methoden ab. Sie können Spring so konfigurieren, dass Klartext, HTML, JSON, XML, Binärdaten oder was auch immer Sie möchten zurückgeben.
Eine Anmerkung nebenbei, eine Klasse, mit der Anmerkungen versehen sind, @Controller
ist noch kein Servlet, sondern lediglich eine Bean. Wie Sie Servlets verwenden, hängt hauptsächlich vom verwendeten Framework ab. Wenn Sie beispielsweise Spring verwenden, wird der Servlet-Job von Springs ausgeführt, DispatcherServlet
die wiederum Anforderungen an die richtigen Beans weiterleiten. Wenn Sie Tomcat verwenden, können Sie Ihre eigenen Servlets direkt schreiben, indem Sie einfach die javax.servlet.http.HttpServlet
Klasse unterordnen und die erforderlichen Methoden überschreiben, z. B. doGet
die auf HTTP-GET-Anforderungen von Ihrem Browser reagieren.