• Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim
KodEdu
  • Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim

Apache CXF – RESTful Servis Örneği

  • Posted by Kodedu
  • Categories backend, Genel, HTML & CSS, Tutorial, Uncategorized, Yazılar, Yazılım
  • Date 23 Şubat 2013

Merhabalar, bu yazımda sizlerle basit ve hızlı bir şekilde nasıl RESTful web servis geliştirebileceğinizden bahsetmek istiyorum. RESTful web servisleri tüm dünyada popülerliğini giderek artırırken, doğal olarak Java ekosisteminin de REST stiline yönelişinde hızlı bir meyil gözlemleniyor.

Java dünyasında RESTful web servislerini geliştirmek için birçok açık kaynak kodlu yazılım projesi bulunuyor. Bunlardan en bilinenleri Jersey (RI), Apache CXF, RestEasy, Restlet olarak sıralanabilir. Bu örnek projede ise Apache CXF kullanan bir REST servisin nasıl oluşturulacağından bahsetmek istemekteyim.

Apache CXF’ nin benim gözlemlediğim en önemli özelliklerinden biri, Spring Framework’ le çok sıkı bir ilişkisinin olduğudur. Spring Framework kültürünü, CXF uygulamalarına baktığınızda kolaylıkla görebilirsiniz. Şimdi isterseniz uygulama adımlarına geçelim.

Adım 1: Basit bir CXF JAX-RS maven prototipinin oluşturulması.

JAX-RS, JCP tarafından RESTful web servislerini tanımlamak amacıyla oluşturulan standardın adıdır.

> mvn archetype:generate       komut bütünüyle prototip sihirbazına geçilir.

1

Adım 2: 222 numaralı proje prototip numarası seçildikten sonra, 20 numaralı en son prototip versiyonu seçilir ve Maven projesine ait konfigürasyon bilgileri girilir.

2

Adım 3: Bu 2 adım gerçekleştirildikten sonra, herhangi bir IDE  ile Maven projesini açtığınızda aşağıdaki gibi bir görüntü elde edilir.

3

 

Şimdi uygulama bileşenlerine biraz göz atalım.

JsonBean: Jackson kütüphanesi tarafından Nesne <> Json dönüşümü yapılacak nesne modelini oluşturur.

public class JsonBean {
private String val1;
private String val2;

public String getVal1() {
return val1;
}

public void setVal1(String val1) {
this.val1 = val1;
}

public String getVal2() {
return val2;
}

public void setVal2(String val2) {
this.val2 = val2;
}

}

Jackson kütüphanesini, bir Java SE standardı olan JAXB 2.0′ a benzetebiliriz. JAXB ile nasıl Nesne <> XML dönüşümü sağlanabiliyorsa, Jackson ile de Nesne <> Json dönüşümü sağlanır.

Helloworld: JAX-RS standardında olan ve RESTful servisi olarak iş gören sınıftır. Bir metodu HTTP GET çağrısında koşarken, diğer metod HTTP POST çağrısına yanıt verir. POST çağrılı metod aynı zamanda bir JSON nesnesi tüketir ve nesneyi manipüle ederek istemciye tekrar JSON olarak geri gönderir.

@Path("/hello")
public class HelloWorld {

@GET // Erişim için HTTP GET metodu
@Path("/echo/{input}") // Erişim URL /hello/echo/{input}
@Produces("text/plain") // Plain text üretir
public String ping(@PathParam("input") String input) {
// Gelen parametre bilgisini,
// Plain text olarak kullanıcıya döndürür.
return input;
}

@POST // Erişim için HTTP POST metodu
@Produces("application/json") // Json üretir
@Consumes("application/json") // Json tüketir
@Path("/jsonBean") // Erişim URL /hello/jsonBean
public Response modifyJson(JsonBean input) {

// Val2 Val1'e eşitlenir.
input.setVal2(input.getVal1());

// 200 OK HTTP Status kodlu,
// JSONBean entity nesnesine sahip
// Http Response üretilir.

return Response.ok().entity(input).build();
}
}

beans.xml: Apache CXF’ nin Spring entegrasyonu son derece iyidir. beans.xml içinde bir RESTful servisi tanımlanmaktadır. Aynı zamanda Jackson’ un devrede olabilmesi için JacksonProvider, beans.xml içinde yerini almaktadır.

<?xml version="1.0" encoding="UTF-8"?>
<beans ...

<jaxrs:server id="services" address="/">
<jaxrs:serviceBeans>
<bean class="com.kodcu.HelloWorld"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
</jaxrs:providers>
</jaxrs:server>

</beans>

 JavaScript Client: Maven Cxf prototip uygulamasında, RESTful uygulamasını test etmek için bir client uygulaması hazır olarak bulunmuyor. Ama merak etmeyin 🙂 Sizler için bir Javascript Client geliştirdik.

$("#getButon").click(function () {

$.ajax({
url: "/jaxrs-service/cxf/hello/echo/" + $("#param").val(),
type: "GET",
dataType: "text",
success: function (gelenYanit) {
$("#getSonuc").text(gelenYanit);
}
});
});

$("#postButon").click(function () {

var jsonBean = new Object();
jsonBean.val1 = $("#val1").val();
jsonBean.val2 = $("#val2").val();

jsonBean = JSON.stringify(jsonBean);

$.ajax({
url: "/jaxrs-service/cxf/hello/jsonBean",
type: "POST",
contentType: "application/json",
dataType: "json",
data: jsonBean,
success: function (gelen) {
$("#postSonuc").text("val1: " + gelen.val1 + " val2: " + gelen.val2);
}
});
});

Not: Kalabalık olmaması açısından Html bileşenleri yazı içerisine eklenmemiştir.

 

Cxf-Restful-Test

 

Adım 4: Uygulamayı en basit haliyle çalıştırmak için > mvn tomcat7:run komut bütününü kullanabilir ve uygulamanın erişim adresine gittiğinizde karşınıza çıkan görünümle testlerinizi gerçekleştirebilirsiniz.

Son olarak: Web tarayıcıda F12 kısayol tuşuyla açılan Developer Tools penceresi, sunucuya gönderilen ve alınan mesajları incelemek için biçilmiş kaftandır.

Uygulama kodlarına buradan erişebilirsiniz.

Tekrar görüşmek dileğiyle..

Tag:apache-cxf, jax-rs, restful, spring

  • Share:
author avatar
Kodedu

Previous post

Spring MVC - Mustache Kardeşliği
23 Şubat 2013

Next post

Java EE Eğitimi Son Sürat Devam Ediyor
14 Mart 2013

You may also like

api-logo
Swagger Nedir? Neden kullanılır?
10 Ekim, 2018
spring-cli-logo
Spring CLI ile Spring Boot Projeleri Hazırlamak
21 Ağustos, 2017
eureka_architecture
Spring Cloud Netflix ve Eureka Service Discovery
3 Temmuz, 2017

Leave A Reply Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta listesine kayıt olun!






Gözde yazılar

Dağıtık uygulama çatılarının karşılaştırılması (Hadoop, GridGain, Hazelcast, DAC) Bölüm II
28Kas2011
Webiner videosu : Javascript ve Rest iletişimi
27Eyl2012
Java EE 7 – Concurrency Utilities
10Eyl2013
Dekoratör Tasarım Kalıbı
15May2012

Son Yazılar

  • Java’da Record’lar 27 Ocak 2020
  • Swagger Nedir? Neden kullanılır? 10 Ekim 2018
  • Spring CLI ile Spring Boot Projeleri Hazırlamak 21 Ağustos 2017
  • Spring Cloud Netflix ve Eureka Service Discovery 3 Temmuz 2017
  • Online React.js Eğitimi ardından (15-25 Mayıs 2017) 31 Mayıs 2017

Son Yorumlar

  • Coupling ve Cohesion Kavramları Nedir? için Hilal
  • Naïve Bayes Sınıflandırma Algoritması için Rahman Usta
  • Naïve Bayes Sınıflandırma Algoritması için Mete
  • YAML Nedir? Neden YAML Kullanmalıyız? için kara
  • JWT (JSON Web Tokens) Nedir? Ne işe yarar? için Furkan

Get Java Software

Arşivler

Bizi takip edin

React.js Eğitimi Başlıyor
11-22 Eylül, 2017
Eğitmen
Rahman Usta
İletişim

merhaba@kodedu.com

  • Hakkında
  • Gizlilik Politikası
  • İletişim
  • Referanslar
Kodedu Bilişim Danışmanlık
Cemil Meriç mah. Çelebi sok.
No:16/3 Ümraniye/İSTANBUL
Tel: 0850 885 38 65
Alemdağ V.D.: 8960484815

KODEDU © Tüm hakları saklıdır.