Java'da RESTful servisi geliştirmek için Jersey API kullanılmaktadır. Öncelikle bir web projesi yapılmalı ve aşağıdaki jar'lar eklenmelidir :
- asm.jar
- jersey-core.jar
- jersey-server.jar
- jersey-servlet.jar
Eğer maven kullanıyor ise artifactId'si jersey-servlet için bağımlılıkların pom.xml'e eklenmesi yeterlidir :
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.14</version>
</dependency>
RESTful isteklerini işlenebilmesi için ServletContainer eklenmesi gerekir. Bunun için web.xml'e aşağıdaki Servlet eklenmelidir :
<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.test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
com.sun.jersey.spi.container.servlet.ServletContainer sınıfı RESTful servislerine gelen istekleri işlemek için gereklidir. com.sun.jersey.config.property.packages özelliği ise web servislerin (daha doğrusu root resource'ların) bulunacağı paket verilmektedir. url-pattern ile /rest/* şeklinde URL'ler rest servisi olarak kabul edilecek ve uygun servis (root resource) aranacaktır
Aşağıdaki gibi bir root resource (kök kaynağı) class'ı yaratabiliriz :
package com.test;
import javax.ws.rs.*;
@Path("/helloworld")
public class HelloWorldResource {
@GET
@Produces("text/plain")
public String getClichedMessage() {
return "Hello World";
}
}
Yukarıda helloworld path'i ile erişilebilecek bir RESTful servisi yaratılmıştır. Servis GET metodu ile çağrıldığında getClichedMessage fonkisyonu çağrılacaktır ve cevap text olarak geri dönecektir. web.xml'de /rest ile path'i verildiği için helloworld servisinin çağrılması için http://
://rest/helloworld ile (Eğer 8080 portu ile localhost'ta deniyorsanız adres http://localhost:8080//rest/helloworldşeklinde olacaktır) adresi çağrımlası gerekecektir.
com.test paketi içinde olması gerekmektedir. Aşağıda ana paket belirtilmiştir :
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.test</param-value>
</init-param>