JAX-RS ve Jersey kullanarak Java'da RESTful Service oluşturun (Celsius'tan Fahrenheit'e ve Fahrenheit'ten Celsius'a)
Yayınlanan: 2020-03-25
Aşağıdaki sorgu/sorunuz var mı?
- Fahrenheit'i Celsius'a ve Celcius'u Fahrenheit'e dönüştürmek için bir Java REST hizmeti yazın
- Jersey kullanarak Java (JAX-RS) ile REST
- Java'da Fahrenhayt'tan Santigrat Yöntemine Dönüşüm
- Derecelerin dönüştürülmesi ile ev ödevi yardımı (CtoF, FtoC)
- RESTful Web Servisleri için Java API
- web servisleri – En iyi Java REST API'si hangisidir?
- Java için REST API?
- ctof ve ftoc öğreticisi. ctof ve ftoc Java Eğitimi
- Java teknolojisiyle RESTful Web hizmetleri oluşturun
- Java için RESTful web API çerçevesi
RESTful Service
: Temsili Durum Transferi (REST), SOAP ve Web Hizmetleri Açıklama Dili (WSDL) tabanlı Web hizmetlerine daha basit bir alternatif olarak Web'de yaygın olarak kabul görmüştür.
REST, farklı dillerde yazılmış çok çeşitli istemciler tarafından kaynak durumlarının nasıl adreslendiği ve HTTP üzerinden aktarıldığı da dahil olmak üzere, bir sistemin kaynaklarına odaklanan Web hizmetlerini tasarlayabileceğiniz bir dizi mimari ilkeyi tanımlar. Onu kullanan Web servislerinin sayısı ile ölçülürse, REST sadece son birkaç yılda baskın bir Web servis tasarım modeli olarak ortaya çıkmıştır. Aslında, REST Web üzerinde o kadar büyük bir etkiye sahipti ki, kullanımı oldukça basit bir stil olduğu için çoğunlukla SOAP ve WSDL tabanlı arayüz tasarımının yerini aldı.
RESTFul Vs. SABUN Eğitimi.

JAX-RS:
RESTful Web Hizmetleri için Java API (JAX-RS), API'lerin geliştirici REST hizmetine yönelik bir kümedir. JAX-RS, Java EE6'nın bir parçasıdır ve geliştiricilerin REST web uygulamasını kolayca geliştirmelerini sağlar.
Jersey:
Jersey, RESTful Web hizmetleri oluşturmak için açık kaynak, üretim kalitesi, JAX-RS (JSR 311) Referans Uygulamasıdır. Ancak, aynı zamanda Referans Uygulamasından daha fazlasıdır. Jersey, geliştiricilerin Jersey'i ihtiyaçlarına göre genişletebilmeleri için bir API sağlar.
Aşağıdaki adımlarla basit RESTful API
oluşturmaya başlayalım:
Aşama 1
Eclipse => Dosya => Yeni => Dinamik Web Projesi'nde. “ CrunchifyRESTJerseyExample
” olarak adlandırın.

Şunları ayarladığınızdan emin olun:
- Hedef çalışma zamanı: Apache Tomcat v9.0
- Dinamik web modülü sürümü: 4.0
Adım 2
web.xml
(dağıtım tanımlayıcısı) görmüyorsanız aşağıdaki adımları izleyin. VEYA
- Projeye sağ tıklayın
-
Java EE Tools
Seçin -
Generate Deployment Descriptor Stub
tıklayın
Bu, /WebContent/WEB-INF/
klasörü altında web.xml
dosyası oluşturacaktır.
Aşama 3
Şimdi, gerekli .jar dosyalarını bağımlılık olarak ekleyebilmemiz için Maven Project
dönüştürün.
Adımlar:
- Projeye sağ tıklayın
-
Configure
tıklayın -
Convert to Maven Project
seçeneğini seçin.


Herhangi bir değişiklik yapmadan Finish button
tıklamanız yeterlidir.

4. Adım
pom.xml
dosyasını açın ve aşağıdaki bağımlılıkları ekleyin.
- asm.jar
- jersey-bundle.jar
- json.jar
- jersey-server.jar

İşte benim pom.xml
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 < / modelVersion > < groupId > CrunchifyRESTJerseyExample < / groupId > < artifactId > CrunchifyRESTJerseyExample < / artifactId > < version > 0.0.1 - SNAPSHOT < / version > < packaging > war < / packaging > < build > < sourceDirectory > src < / sourceDirectory > < plugins > < plugin > < artifactId > maven - compiler - plugin < / artifactId > < version > 3.7.0 < / version > < configuration > < source > 1.7 < / source > < target > 1.7 < / target > < / configuration > < / plugin > < / plugins > < / build > < dependencies > < dependency > < groupId > asm < / groupId > < artifactId > asm < / artifactId > < version > 3.3.1 < / version > < / dependency > < dependency > < groupId > com . sun . jersey < / groupId > < artifactId > jersey - bundle < / artifactId > < version > 1.19.4 < / version > < / dependency > < dependency > < groupId > org . json < / groupId > < artifactId > json < / artifactId > < version > 20170516 < / version > < / dependency > < dependency > < groupId > com . sun . jersey < / groupId > < artifactId > jersey - server < / artifactId > < version > 1.19.4 < / version > < / dependency > < dependency > < groupId > com . sun . jersey < / groupId > < artifactId > jersey - core < / artifactId > < version > 1.19.4 < / version > < / dependency > < / dependencies > < / project > |
Adım 5
web.xml dosyanızı bununla güncelleyin. İşte benim web.xml
dosya kopyam:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<? xml version = "1.0" encoding = "UTF-8" ?> < web - app xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns : web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi : schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version = "3.0" > < display - name > CrunchifyRESTJerseyExample < / display - name > < welcome - file - list > < welcome - file > index . html < / welcome - file > < welcome - file > index . htm < / welcome - file > < welcome - file > index . jsp < / welcome - file > < welcome - file > default . html < / welcome - file > < welcome - file > default . htm < / welcome - file > < welcome - file > default . jsp < / welcome - file > < / welcome - file - list > < servlet > < servlet - name > Jersey Web Application < / servlet - name > < servlet - class > com . sun . jersey . spi . container . servlet . ServletContainer < / servlet - class > < load - on - startup > 1 < / load - on - startup > < / servlet > < servlet - mapping > < servlet - name > Jersey Web Application < / servlet - name > < url - pattern > / crunchify /* < / url - pattern > < / servlet - mapping > < / web - app > |
Adım-6
-
Java Resources
Git - src'ye tıklayın
- Sağ tıklayın -> Yeni -> Sınıf
- Paket: com.crunchify.restjersey
- İsim: CtoFService
CtoFService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com . crunchify . restjersey ; /** * @author Crunchify.com * * Description: This program converts unit from Centigrade to Fahrenheit. * Last updated: 12/28/2018 */ import javax . ws . rs . GET ; import javax . ws . rs . Path ; import javax . ws . rs . PathParam ; import javax . ws . rs . Produces ; @ Path ( "/ctofservice" ) public class CtoFService { @ GET @ Produces ( "application/xml" ) public String convertCtoF ( ) { Double fahrenheit ; Double celsius = 36.8 ; fahrenheit = ( ( celsius * 9 ) / 5 ) + 32 ; String result = "@Produces(\"application/xml\") Output: \n\nC to F Converter Output: \n\n" + fahrenheit ; return "<ctofservice>" + "<celsius>" + celsius + "</celsius>" + "<ctofoutput>" + result + "</ctofoutput>" + "</ctofservice>" ; } @ Path ( "{c}" ) @ GET @ Produces ( "application/xml" ) public String convertCtoFfromInput ( @ PathParam ( "c" ) Double c ) { Double fahrenheit ; Double celsius = c ; fahrenheit = ( ( celsius * 9 ) / 5 ) + 32 ; String result = "@Produces(\"application/xml\") Output: \n\nC to F Converter Output: \n\n" + fahrenheit ; return "<ctofservice>" + "<celsius>" + celsius + "</celsius>" + "<ctofoutput>" + result + "</ctofoutput>" + "</ctofservice>" ; } } |
Adım-7
Aynı şekilde FtoCService.java oluşturun
FtoCService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
package com . crunchify . restjersey ; /** * @author Crunchify, LLC * Description: This program converts unit from Fahrenheit to Centigrade. * */ import javax . ws . rs . GET ; import javax . ws . rs . Path ; import javax . ws . rs . PathParam ; import javax . ws . rs . Produces ; import javax . ws . rs . core . Response ; import org . json . JSONException ; import org . json . JSONObject ; @ Path ( "/ftocservice" ) public class FtoCService { @ GET @ Produces ( "application/json" ) public Response convertFtoC ( ) throws JSONException { JSONObject jsonObject = new JSONObject ( ) ; Double fahrenheit = 98.24 ; Double celsius ; celsius = ( fahrenheit - 32 ) * 5 / 9 ; jsonObject . put ( "F Value" , fahrenheit ) ; jsonObject . put ( "C Value" , celsius ) ; String result = "@Produces(\"application/json\") Output: \n\nF to C Converter Output: \n\n" + jsonObject ; return Response . status ( 200 ) . entity ( result ) . build ( ) ; } @ Path ( "{f}" ) @ GET @ Produces ( "application/json" ) public Response convertFtoCfromInput ( @ PathParam ( "f" ) float f ) throws JSONException { JSONObject jsonObject = new JSONObject ( ) ; float celsius ; celsius = ( f - 32 ) * 5 / 9 ; jsonObject . put ( "F Value" , f ) ; jsonObject . put ( "C Value" , celsius ) ; String result = "@Produces(\"application/json\") Output: \n\nF to C Converter Output: \n\n" + jsonObject ; return Response . status ( 200 ) . entity ( result ) . build ( ) ; } } |
Adım-8
Şimdi Eclipse çalışma alanını temizleyelim ve proje oluşturalım.

1 2 3 |
1. Project - > Clean 2. Project - > Right click - > Maven - > Update Project 3. Project - > Right click - > Run As . . - > Maven Build ( option 5 ) - > Add "clean install" - > Run |
- Yukarıdaki
point 3
içinthese screenshots
kullanın: Maven Build, temiz kurulum. - Derleme başarısı mesajını görmelisiniz.
Adım-9
CrunchifyRESTJerseyExample
projesini dağıtın. Henüz yapmadıysanız, Eclipse'de Tomcat'i nasıl kuracağınıza ilişkin ayrıntılı adımlar burada verilmiştir.
- Sunucu Sekmesine Git
- Sunucuya sağ tıklayın
-
Add and Remove Projects
tıklayın - Projeyi sol taraftan seçin ve
Add
tıklayın - Bitir'i tıklayın

Adım-10
- Tomcat Server 9.0'ı başlatın

Komple proje yapısı:

İşte Java Yapı Yolu Bağımlılıkları:

Bu proje için JDK 1.8 kullandığınızdan emin olun. Java 9'u başlatma – JAXB, JAX-WS, JAF, JTA, CORBA modülleri kaldırılır ve bu modülleri Maven pom.xml dosyanıza manuel olarak eklemeniz gerekir.
Hepsi hazır.
Şimdi RESTful Web Service'inizi test edelim.
Test 1: Parametre without
Celsius'tan Fahrenheit'e web hizmeti
Bağlantı: http://localhost:8080/CrunchifyRESTJerseyExample/crunchify/ctofservice/

Test 2: Parametre with
Santigrattan Fahrenhayt'a web hizmeti

Test 3: Parametre without
Fahrenhayt'tan Celsius web hizmetine

Test 4: Parametre with
Fahrenhayt'tan Celsius web hizmetine

RESTFul İstemci Örnekleri:
- Apache HttpClient Kullanarak RESTful Java İstemcisi Nasıl Oluşturulur – Örnek
- Java.Net.URL ile RESTful Java İstemcisi Nasıl Oluşturulur – Örnek
- Jersey İstemcisi ile RESTful Java İstemcisi Nasıl Oluşturulur – Örnek
Bir diğeri okumalı:
- CrunchifyJSONtoHTML.js – JSON'dan HTML tablosuna Dönüştürücü Komut Dosyası
- Java'da Programlı Olarak Bellek Yetersiz (OOM) Nasıl Oluşturulur
- Bir Sunucuda Birden Çok Tomcat Örneği Nasıl Çalıştırılır?
- Java Dosyasından JSON Nesnesi Nasıl Okunur – Crunchify Eğitimi
Kodu çalıştırırken sorun mu yaşıyorsunuz?
Bazı triyaj adımları:
Başlangıçta jersey-core
bağımlılığını kullandım. Ancak, aşağıdaki sorunu önlemek için jersey-server
bağımlılığı da eklendi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
SEVERE : Servlet [ Jersey Web Application ] in web application [ / CrunchifyRESTJerseyExample ] threw load ( ) exception java . lang . ClassNotFoundException : com . sun . jersey . spi . container . servlet . ServletContainer at org . apache . catalina . loader . WebappClassLoaderBase . loadClass ( WebappClassLoaderBase . java : 1328 ) at org . apache . catalina . loader . WebappClassLoaderBase . loadClass ( WebappClassLoaderBase . java : 1157 ) at org . apache . catalina . core . DefaultInstanceManager . loadClass ( DefaultInstanceManager . java : 542 ) at org . apache . catalina . core . DefaultInstanceManager . loadClassMaybePrivileged ( DefaultInstanceManager . java : 523 ) at org . apache . catalina . core . DefaultInstanceManager . newInstance ( DefaultInstanceManager . java : 150 ) at org . apache . catalina . core . StandardWrapper . loadServlet ( StandardWrapper . java : 1032 ) at org . apache . catalina . core . StandardWrapper . load ( StandardWrapper . java : 971 ) at org . apache . catalina . core . StandardContext . loadOnStartup ( StandardContext . java : 4829 ) at org . apache . catalina . core . StandardContext . startInternal ( StandardContext . java : 5143 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . core . ContainerBase $ StartChild . call ( ContainerBase . java : 1432 ) at org . apache . catalina . core . ContainerBase $ StartChild . call ( ContainerBase . java : 1422 ) at java . base / java . util . concurrent . FutureTask . run ( FutureTask . java : 264 ) at org . apache . tomcat . util . threads . InlineExecutorService . execute ( InlineExecutorService . java : 75 ) at java . base / java . util . concurrent . AbstractExecutorService . submit ( AbstractExecutorService . java : 140 ) at org . apache . catalina . core . ContainerBase . startInternal ( ContainerBase . java : 944 ) at org . apache . catalina . core . StandardHost . startInternal ( StandardHost . java : 831 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . core . ContainerBase $ StartChild . call ( ContainerBase . java : 1432 ) at org . apache . catalina . core . ContainerBase $ StartChild . call ( ContainerBase . java : 1422 ) at java . base / java . util . concurrent . FutureTask . run ( FutureTask . java : 264 ) at org . apache . tomcat . util . threads . InlineExecutorService . execute ( InlineExecutorService . java : 75 ) at java . base / java . util . concurrent . AbstractExecutorService . submit ( AbstractExecutorService . java : 140 ) at org . apache . catalina . core . ContainerBase . startInternal ( ContainerBase . java : 944 ) at org . apache . catalina . core . StandardEngine . startInternal ( StandardEngine . java : 261 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . core . StandardService . startInternal ( StandardService . java : 422 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . core . StandardServer . startInternal ( StandardServer . java : 801 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . startup . Catalina . start ( Catalina . java : 695 ) at java . base / jdk . internal . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method ) at java . base / jdk . internal . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 62 ) at java . base / jdk . internal . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 43 ) at java . base / java . lang . reflect . Method . invoke ( Method . java : 566 ) at org . apache . catalina . startup . Bootstrap . start ( Bootstrap . java : 350 ) at org . apache . catalina . startup . Bootstrap . main ( Bootstrap . java : 492 ) |
Yukarıdaki hatayı alıyorsanız, pom.xml dosyanıza aşağıdaki maven bağımlılığını eklemeyi deneyin.
1 2 3 4 5 |
< dependency > < groupId > org . glassfish . jersey . core < / groupId > < artifactId > jersey - server < / artifactId > < version > 2.27 < / version > < / dependency > |