☁️ 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.
| Özellik | Web Uygulaması | Web Servisi |
|---|---|---|
| Hedef Kullanıcı | İnsan | Uygulama |
| Veri Formatı | HTML | XML / JSON |
| Protokol | HTTP / HTTPS | SOAP veya REST |
| Yeniden Kullanım | Sınırlı | Yüksek |
| Oturum Yönetimi | Stateful | Stateless |
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)
- 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.
- JAX-RS neden harici kütüphane ister?
Çünkü JAX-RS bir spesifikasyondur, Jersey veya RESTEasy gibi bir implementasyon gerekir.
- 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.
- RESTful mimarisi nedir?
HTTP metodlarını kullanarak kaynaklara erişimi tanımlayan stateless bir mimari yaklaşımdır.
- 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!