מדריך שירותי רשת ג'אווה

ברוך הבא למדריך לשירותי Java Web Services. כאן נלמד על שירותי האינטרנט, מונחים שימושיים בתחום, ואז נתרקם על סוגי ה- API השונים של Java המשמשים ליצירת שירותי אינטרנט.

מהו שירות אינטרנט

במילים פשוטות, שירותים שניתן לגשת אליהם דרך הרשת נקראים שירותי אינטרנט. אז איך זה שונה מיישומים אינטרנטיים, שגם הם שירותים הנגישים דרך הרשת? ישנם כמה מאפיינים שמבהירים את ההבחנה הזו.

  • יישומים אינטרנטיים נועדו למשתמשים ולגישה דרך דפדפן בפורמט שניתן לקריאה על ידי בני אדם, כאשר שירותי האינטרנט נועדו ליישומים לגישה לנתונים בפורמט של XML, JSON וכו'.
  • יישומים אינטרנטיים תמיד משתמשים בפרוטוקול HTTP/HTTPS, כאשר שירותי אינטרנט מסורתיים משתמשים בפרוטוקול SOAP. לאחרונה REST זכה לפופולריות, הוא סגנון אדריכלי וכמעט תמיד פועל על פרוטוקול HTTP/HTTPS.
  • יישומים אינטרנטיים לא נועדו לשימוש חוזר, בעוד שזהו אחד מהיתרונות של שירותי האינטרנט. שירות אינטרנט יחיד יכול לשמש על ידי סוגים שונים של יישומים.
  • יישומים אינטרנטיים יכולים לגשת לשירותי אינטרנט כדי לגשת לכמה נתונים או לבצע מטרות מסוימות, בעוד ששירותי אינטרנט אינם יכולים לגשת ליישומים אינטרנטיים כדי לאחזר נתונים.
  • יישומים אינטרנטיים מסוגלים לשמור על סשן משתמש, ושירותי אינטרנט הם ללא מצב.

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.

סוגי שירותי האינטרנט

ישנם שני סוגים של שירותי אינטרנט.

  1. SOAP: SOAP הוא ראשי תיק עבור Simple Object Access Protocol. SOAP הוא פרוטוקול תעשייתי בסגנון XML לעיצוב ופיתוח של שירותי אינטרנט. מכיוון שהוא מבוסס על XML, הוא אינו תלוי בפלטפורמה או בשפה ולכן השרת שלנו יכול להיות מבוסס על JAVA והלקוח יכול להיות על .NET, PHP וכו 'וההפך.
  2. REST: REST הוא סגנון אדריכלי לפיתוח של שירותי אינטרנט. הוא מרוויח פופולריות בזמן האחרון מכיוון שיש לו מכף למידה קטנה בהשוואה ל- SOAP. משאבים הם עקרונות מרכזיים של שירותי אינטרנט Restful והם מזוהים באופן ייחודי על ידי ה-URIs שלהם.

שירותי אינטרנט ב-Java

Java מספקת API ייחודית ליצירת שירותי אינטרנט גם ב- SOAP וגם ב- REST.

  1. JAX-WS: JAX-WS מתייצבת כ-Java API for XML Web Services. JAX-WS היא API בסגנון XML ב-Java לבניית שרתי שירותים אינטרנט ויישומי לקוח.
  2. JAX-RS: Java API for RESTful Web Services (JAX-RS) הוא ה-API של Java ליצירת שירותי אינטרנט בסגנון REST. JAX-RS משתמשת בהערות לפשט את הפיתוח והפרסום של שירותים אינטרנט.

שני ה- API הללו הם חלק מהתקנת JDK התקנית, כך שאין צורך להוסיף כל JARים כדי לעבוד איתם. שני ה- APIים הללו משתמשים בהערות באופן מאוד רב.

יישום Hello World JAX-WS פשוט

בואו ניצור יישום Hello World JAX-WS מאוד פשוט. 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());
	}
}

זהו. רק הריצו את היישום הזה והשירות הרשת JAX-WS שלנו Hello World ייפורסם. בתמונה למטה ניתן לראות את הקריאה לשירות הרשת JAX-WS הזה דרך SOAP UI. זהו לקורס בסיסי מאוד של שירות רשת JAX-WS. למטה יש כמה מהמאמרים שכדאי לקרוא להבנה טובה יותר של שירותי רשת SOAP ו- JAX-WS.

  1. מדריך ל-JAX-WS
  2. פרסום שירות רשת JAX-WS על Tomcat
  3. דוגמת שירות רשת SOAP באמצעות Eclipse ו-Apache Axis
  4. מדריך לשירותי רשת Apache Axis 2

שלום עולם אפליקציית JAX-RS

Jersey היא היישום הרפרנס של API של JAX-RS, זה לא חלק מ- JDK התקני ועלינו לכלול את כל ה־ jars הנדרשים. הדרך הטובה ביותר היא להשתמש בבניית Maven, לכן יש ליצור פרויקט דינמי פשוט ואז להמיר אותו ל-Maven ב- Eclipse. הנה קובץ pom.xml הסופי שיש בו תלויות נדרשות.

<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>

כעת יש להוסיף את Servlet של Jersey לקובץ התיאור הדינאמי שלנו web.xml כבקר מראש.

<?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>

שני השלבים הנ"ל דרושים להגדרה ההתחלתית, למטה נמצא מחלקת השירות שלנו של Hello World JAX-RS.

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;
	}
}

פשוט ייצא אותו כקובץ WAR ואז לגשת אליו בדפדפן כפי שמוצג בתמונה למטה. ניתן לשנות את החלק האחרון של ה-URL וההודעה המוחזרת תשתנה בהתאם. ניתן לראות כמה קל היה ליצור שירות אינטרנטי RESTful באמצעות API של JAX-RS. עם זאת, יש עוד ללמוד, ניתן לעקוב אחרי המאמרים הבאים כדי ללמוד עוד.

  1. שירותים אינטרנטיים RESTful
  2. מדריך RESTEasy
  3. מדריך Jersey

כל זה להצגה מהירה של שירותי רשת ג'אווה, סופית אם אתה מתכוון לראיון באמצעות שאלות ראיון על שירותים רשת. הפניות: דף Oracle של JAX-WS, דף Oracle של JAX-RS

Source:
https://www.digitalocean.com/community/tutorials/java-web-services-tutorial