Willkommen zum Java Web Services Tutorial. Hier werden wir über Webdienste lernen, nützliche Konzepte in Webdiensten und dann verschiedene Arten von APIs, die wir in Java haben, um Webdienste zu erstellen.
Was ist ein Webdienst
In einfachen Worten, Dienste, die über ein Netzwerk zugegriffen werden können, werden als Webdienste bezeichnet. Wie unterscheiden sie sich also von Webanwendungen, die auch Dienste sind, die über ein Netzwerk zugegriffen werden? Es gibt einige Attribute, die diesen Unterschied klären.
- Webanwendungen sind für Benutzer gedacht und sollen im Browser im menschenlesbaren Format abgerufen werden, während Webdienste für Anwendungen gedacht sind, um Daten im Format XML, JSON usw. abzurufen.
- Webanwendungen verwenden immer das HTTP/HTTPS-Protokoll, während traditionelle Webdienste das SOAP-Protokoll verwenden. In letzter Zeit wird REST immer beliebter, das ein Architekturstil ist und fast immer auf dem HTTP/HTTPS-Protokoll läuft.
- Webanwendungen sind nicht für die Wiederverwendbarkeit gedacht, während dies einer der Vorteile von Webdiensten ist. Ein einziger Webdienst kann von verschiedenen Arten von Anwendungen verwendet werden.
- Webanwendungen können auf Webdienste zugreifen, um Daten abzurufen oder bestimmte Aufgaben auszuführen, Webdienste können jedoch nicht auf Webanwendungen zugreifen, um Daten abzurufen.
- Webanwendungen können Benutzersitzungen verwalten, Webdienste sind zustandslos.
I hope above differences are good enough to clear any confusion with web applications and web services. Both are different concepts and meant for different purpose.
Arten von Webdiensten
Es gibt zwei Arten von Webdiensten.
- SOAP: SOAP steht für Simple Object Access Protocol. SOAP ist ein XML-basiertes branchenübliches Protokoll zur Gestaltung und Entwicklung von Webdiensten. Da es auf XML basiert, ist es plattform- und sprachunabhängig. Unser Server kann also auf JAVA basieren und der Client auf .NET, PHP usw. und umgekehrt.
- REST: REST ist ein architektonischer Stil zur Entwicklung von Webdiensten. Er gewinnt in letzter Zeit an Popularität, da er im Vergleich zu SOAP eine geringere Lernkurve aufweist. Ressourcen sind Kernkonzepte von RESTful-Webdiensten und sie werden durch ihre URIs eindeutig identifiziert.
Java-Webdienste
Java bietet eine eigene API zur Erstellung sowohl von SOAP- als auch von REST-Webdiensten.
- JAX-WS: JAX-WS steht für Java-API für XML-Webdienste. JAX-WS ist eine auf XML basierende Java-API zum Erstellen von Webdienst-Servern und -Clientanwendungen.
- JAX-RS: Java-API für RESTful-Webdienste (JAX-RS) ist die Java-API zum Erstellen von REST-Webdiensten. JAX-RS verwendet Annotationen, um die Entwicklung und Bereitstellung von Webdiensten zu vereinfachen.
Beide dieser APIs sind Teil der Standard-JDK-Installation, daher müssen wir keine JAR-Dateien hinzufügen, um mit ihnen zu arbeiten. Beide dieser APIs verwenden Annotationen sehr stark.
Hallo Welt JAX-WS Anwendung
Lasst uns eine sehr einfache Hallo-Welt-JAX-WS-Anwendung erstellen. TestService.java
package com.journaldev.jaxws.service;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Endpoint;
@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
public class TestService {
@WebMethod
public String sayHello(String msg){
return "Hello "+msg;
}
public static void main(String[] args){
Endpoint.publish("https://localhost:8888/testWS", new TestService());
}
}
Das ist es. Führen Sie diese Anwendung einfach aus, und unser Hallo-Welt-JAX-WS-SOAP-Webservice wird veröffentlicht. Im folgenden Bild wird die Aufruf dieses JAX-WS-Webservices durch SOAP UI dargestellt. Das war es für ein sehr einfaches Tutorial zum JAX-WS-Webservice. Im Folgenden finden Sie einige Artikel, die Sie für ein besseres Verständnis von SOAP-Webservices und JAX-WS lesen sollten.
- JAX-WS Tutorial
- JAX-WS-Webservice-Bereitstellung auf Tomcat
- SOAP-Webservice-Beispiel mit Eclipse und Apache Axis
- Apache Axis 2 Webservices Tutorial
Hallo Welt JAX-RS Anwendung
Jersey ist die Referenzimplementierung der JAX-RS API. Es ist kein Teil der Standard-JDK, und wir müssen alle erforderlichen JARs einschließen. Der beste Weg ist die Verwendung von Maven-Build. Erstellen Sie dazu ein einfaches Dynamic Web-Projekt und konvertieren Sie es dann in Maven in Eclipse. Hier ist die endgültige pom.xml-Datei mit den erforderlichen Abhängigkeiten.
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JAX-RS-HelloWorld</groupId>
<artifactId>JAX-RS-HelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Fügen Sie jetzt dem Bereitstellungsbeschreibungs-Web.xml den Jersey-Servlet als Front-Controller hinzu.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns="https://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="https://xmlns.jcp.org/xml/ns/javaee https://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>JAX-RS-HelloWorld</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.journaldev.jaxrs.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Die obigen beiden Schritte sind für die erste Einrichtung erforderlich. Nachstehend finden Sie unsere Hallo-Welt-JAX-RS-Serviceklasse.
package com.journaldev.jaxrs.service;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@Path("/test")
public class TestService {
@GET
@Path("/hello/{msg}")
public String sayHello(@PathParam(value="msg") String msg){
return "Hello "+msg;
}
}
Exportieren Sie sie einfach als WAR-Datei und greifen Sie dann wie im untenstehenden Bild gezeigt darauf zu. Sie können den letzten Teil der URL ändern, und die zurückgegebene Nachricht ändert sich entsprechend. Sie können sehen, wie einfach es war, einen RESTful Web Service mit der JAX-RS API zu erstellen. Es gibt jedoch mehr dazu. Folgen Sie den untenstehenden Artikeln, um mehr zu erfahren.
Das ist alles für eine kurze Einführung von Java-Webdiensten. Wenn Sie sich abschließend auf ein Interview vorbereiten, gehen Sie durch Webdienst-Interviewfragen. Referenzen: JAX-WS Oracle Seite, JAX-RS Oracle Seite
Source:
https://www.digitalocean.com/community/tutorials/java-web-services-tutorial