Skip to main content

☁️ Java Web Servisleri Rehberi: SOAP ve REST API Geliştirme (JAX-WS & JAX-RS)


🧠 Bu Rehberde Ne Öğreneceksiniz?

Bu rehberde, Java ile web servisleri geliştirmenin temel yapı taşlarını öğreneceksiniz.
SOAP (JAX-WS) ve REST (JAX-RS) mimarilerini karşılaştıracak, ardından her iki model için örnek “Merhaba Dünya” uygulamaları geliştireceksiniz.
Son bölümde Maven, Jersey ve web.xml yapılandırmalarına da değineceğiz.


🌐 1. Web Servisi Nedir?

Basitçe söylemek gerekirse, web servisi ağ üzerinden erişilebilen bir yazılım bileşenidir.
Web uygulamalarından farklı olarak, insan yerine uygulamalar arası veri alışverişi sağlar.

ÖzellikWeb UygulamasıWeb Servisi
Hedef KullanıcıİnsanUygulama
Veri FormatıHTMLXML / JSON
ProtokolHTTP / HTTPSSOAP veya REST
Yeniden KullanımSınırlıYüksek
Oturum YönetimiStatefulStateless

Bu farklar, web servislerinin platform bağımsız entegrasyonlar kurmada neden bu kadar önemli olduğunu açıklar.


🧩 2. Web Servis Türleri

🧱 SOAP (Simple Object Access Protocol)

  • XML tabanlı, endüstri standardı bir protokoldür.
  • Platform bağımsızdır; Java, .NET, PHP gibi dillerle uyumlu çalışır.
  • Genellikle güvenli, kurumsal sistemlerde tercih edilir.

⚡ REST (Representational State Transfer)

  • Bir protokol değil, mimari yaklaşımdır.
  • HTTP metodlarını (GET, POST, PUT, DELETE) kullanır.
  • JSON veya XML verilerini işler.
  • Öğrenmesi kolaydır ve modern API tasarımlarında standart haline gelmiştir.

☕ 3. Java Web Servis API’leri

Java, hem SOAP hem REST servisleri oluşturmak için iki güçlü API sunar:

  • JAX-WS (Java API for XML Web Services): SOAP tabanlı servis geliştirmek için kullanılır.
  • JAX-RS (Java API for RESTful Web Services): REST mimarisine uygun servisler oluşturur.

Her iki API de JDK’nın parçasıdır ve annotation (dipnot) yapısıyla geliştirmeyi oldukça kolaylaştırır.


💬 4. JAX-WS ile “Hello World” SOAP Servisi

Aşağıdaki örnek, basit bir SOAP servisi oluşturur.

package com.rabisu.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 "Merhaba " + msg;
}

public static void main(String[] args){
Endpoint.publish("https://rabisu.cloud:8888/TestWS", new TestService());
}
}

➡️ Bu kod, https://rabisu.cloud:8888/TestWS adresinde çalışan bir SOAP servisi oluşturur.

Adımlar:

Dosyayı TestService.java olarak kaydet.

Çalıştır, servis otomatik olarak yayınlansın.

SOAP UI veya Postman ile test et.


⚙️ 5. JAX-RS ile “Hello World” REST Servisi

JAX-RS, RESTful servisler geliştirmek için kullanılır. Bu örnekte, popüler implementasyon olan Jersey kullanıyoruz.

pom.xml — Maven Bağımlılıkları


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

web.xml — Servlet Yapılandırması


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

REST Servis Sınıfı


package com.rabisu.jaxrs.service;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

@Path("/test")
public class TestService {

@GET
@Path("/selam/{isim}")
public String sayHello(@PathParam("isim") String isim){
return "Selam, hoş geldin " + isim;
}
}

➡️ Tarayıcıdan https://rabisu.cloud/uygulama/test/selam/Ali adresine gidersen “Selam, hoş geldin Ali” yanıtını alırsın.


🧰 6. Sık Kullanılan Web Servis Kavramları

WSDL (Web Service Description Language): SOAP servisinin yapısını tanımlar.

Endpoint: Servisin erişim adresidir.

Resource (Kaynak): REST servislerinde veri URI ile temsil edilir.

Annotation: JAX-WS ve JAX-RS’te yapılandırmayı kolaylaştıran özel dipnotlardır.


❓ Sıkça Sorulan Sorular (SSS)

  1. SOAP servisi çalıştırmak için Tomcat gerekir mi?

Hayır. Endpoint.publish() metodu ile servis doğrudan yayınlanabilir. Ancak büyük projelerde Tomcat veya GlassFish önerilir.

  1. JAX-RS neden harici kütüphane ister?

Çünkü JAX-RS bir spesifikasyondur, Jersey veya RESTEasy gibi bir implementasyon gerekir.

  1. SOAP ve REST performans açısından nasıl farklıdır?

SOAP XML kullanır ve mesaj başlıkları büyüktür, bu da REST’e göre daha yavaştır. REST JSON kullandığı için daha hafiftir.

  1. RESTful mimarisi nedir?

HTTP metodlarını kullanarak kaynaklara erişimi tanımlayan stateless bir mimari yaklaşımdır.

  1. Web servisleri nasıl test edilir?

SOAP için SOAP UI, REST için Postman veya cURL kullanılabilir.


🎯 Sonuç

Bu rehberde, Java'da SOAP (JAX-WS) ve REST (JAX-RS) tabanlı web servislerinin nasıl oluşturulduğunu adım adım gördünüz. Artık kendi servislerinizi tasarlayıp, test edip, Rabisu Bulut altyapısında güvenle yayınlayabilirsiniz.

💬 Rabisu Bulut üzerinde hemen bir sanal sunucu (instance) oluşturun ve Java API’lerinizi canlıya alın!