Welkom bij de Java Web Services Tutorial. Hier zullen we leren over web services, nuttige concepten in web services en vervolgens de verschillende soorten API’s die we in Java hebben om web services te maken.
Wat is een webdienst
In eenvoudige bewoordingen worden diensten die via het netwerk toegankelijk zijn, webdiensten genoemd. Dus hoe verschilt dit van een webapplicatie, zij zijn ook diensten die via het netwerk toegankelijk zijn. Er zijn een paar kenmerken die dit verschil verduidelijken.
- Webapplicaties zijn bedoeld voor gebruikers en om toegankelijk te zijn in een browser met een menselijk leesbaar formaat, terwijl webdiensten bedoeld zijn voor applicaties om gegevens in het formaat van XML, JSON, enz. te benaderen.
- Webapplicaties maken altijd gebruik van het HTTP/HTTPS-protocol, terwijl traditionele webdiensten het SOAP-protocol gebruiken. Tegenwoordig wint REST aan populariteit, dat een architectuurstijl is en bijna altijd wordt uitgevoerd op het HTTP/HTTPS-protocol.
- Webapplicaties zijn niet bedoeld voor herbruikbaarheid, terwijl dit een van de voordelen is van webdiensten. Een enkele webdienst kan worden gebruikt door verschillende soorten applicaties.
- Webapplicaties kunnen webdiensten benaderen om gegevens op te halen of om bepaalde taken uit te voeren, maar webdiensten kunnen geen webapplicaties benaderen om gegevens op te halen.
- Webapplicaties zijn in staat om de gebruikerssessie te onderhouden, webdiensten zijn stateless.
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.
Soorten Web Services
Er zijn twee soorten web services.
- SOAP: SOAP staat voor Simple Object Access Protocol. SOAP is een op XML gebaseerd industrieel standaardprotocol voor het ontwerpen en ontwikkelen van webdiensten. Omdat het op XML is gebaseerd, is het platform- en taalonafhankelijk. Dus onze server kan gebaseerd zijn op JAVA en de client kan op .NET, PHP, enz. zijn en vice versa.
- REST: REST is een architecturale stijl voor het ontwikkelen van webdiensten. Het wint de laatste tijd aan populariteit omdat het een kleine leercurve heeft in vergelijking met SOAP. Resources zijn kernbegrippen van RESTful webdiensten en ze worden uniek geïdentificeerd door hun URI’s.
Java Web Services
Java biedt zijn eigen API om zowel SOAP- als REST-webdiensten te maken.
- JAX-WS: JAX-WS staat voor Java API voor XML-webdiensten. JAX-WS is een op XML gebaseerde Java API om zowel server- als clientapplicaties voor webdiensten te bouwen.
- JAX-RS: Java API voor RESTful Web Services (JAX-RS) is de Java API voor het maken van REST-webdiensten. JAX-RS maakt gebruik van annotaties om de ontwikkeling en implementatie van webdiensten te vereenvoudigen.
Beide van deze API’s maken deel uit van de standaard JDK-installatie, dus we hoeven geen jars toe te voegen om ermee te werken. Beide van deze API’s maken uitgebreid gebruik van annotaties.
Hello World JAX-WS Applicatie
Laten we een zeer eenvoudige Hello World JAX-WS-applicatie maken. 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());
}
}
Dat is het. Voer deze toepassing uit en onze Hello World JAX-WS SOAP-webservice wordt gepubliceerd. De onderstaande afbeelding toont de oproep van deze JAX-WS-webservice via SOAP UI. Dat is het voor een zeer eenvoudige tutorial van JAX-WS-webservice. Hier zijn enkele artikelen die je zou moeten lezen voor een beter begrip van SOAP-webservices en JAX-WS.
- JAX-WS Tutorial
- JAX-WS Webservice-implementatie op Tomcat
- SOAP Webservice Voorbeeld met Eclipse en Apache Axis
- Apache Axis 2 Webservice Tutorial
Hallo Wereld JAX-RS Applicatie
Jersey is de referentie-implementatie van de JAX-RS API, het maakt geen deel uit van de standaard JDK en we moeten alle benodigde jars opnemen. De beste manier is om Maven-build te gebruiken, dus maak een eenvoudig dynamisch webproject en converteer het vervolgens naar Maven in Eclipse. Hier is het uiteindelijke pom.xml-bestand met de vereiste afhankelijkheden.
<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>
Voeg nu Jersey-servlet toe aan ons implementatiebestand web.xml als frontcontroller.
<?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>
De bovenstaande twee stappen zijn vereist voor de initiële configuratie, hieronder staat onze Hello World 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;
}
}
Exporteer het gewoon als WAR-bestand en open het vervolgens in de browser zoals getoond in onderstaande afbeelding. U kunt het laatste deel van de URL wijzigen en het geretourneerde bericht zal dienovereenkomstig veranderen. U kunt zien hoe eenvoudig het was om een RESTful webservice te maken met behulp van de JAX-RS API. Er is echter meer, volg de onderstaande artikelen om meer te weten te komen.
Dat is alles voor een snelle introductie van java web services, als je je voorbereidt op een sollicitatiegesprek, ga dan door Web Services Interviewvragen. Referenties: JAX-WS Oracle Pagina, JAX-RS Oracle Pagina
Source:
https://www.digitalocean.com/community/tutorials/java-web-services-tutorial