Merhabalar arkadaşlar. Bu yazıda RestEasy’de bize sunulan bir özellik olan Servlet Initializer konusundan bahsedeceğim.

Servlet 3.0 ve Rest 2.0’dan önce biz yazmış olduğumuz web servis kodlarımızdan çıktı alabilmek, yani bir bakıma onları tarayıcı üzerinde izleyebilmek için, render edilebilmeleri için deployment descriptor file denilen web.xml dosyamıza tanımlamak yapmak zorundaydık. Eğer daha önce az da olsa Servlet’ler ile çalıştı iseniz bu size çok tanıdık gelmiştir. Ama benim gözlemlediğim kadarı ile Java Community’si geliştiricileri XML dosyaları ile uğraşmaktan, oralarda tanımlamar yapmaktan kurtarmak en azından bunu mümkün olduğunca azaltmak istiyorlar. İşte bu çerçevede Rest Easy geliştiricileri bu kütüphanenin Servlet’lerini web.xml’e tanıtmak yerine Java kodu ile çözme yoluna gitmişler.

Bu noktada değinmemiz ve hatırlatmamız gereken önemli bir nokta var. Bu bahsettiğimiz durum Servlet 3.0 ve sonrası için geçerli olacaktır. Servlet 3.0’dan önceki sürümler için yine gidip web.xml’e tanımlamalar yapmak durumundayız. Ve tabii ki projenizde web.xml dosyası bulunmak zorunda. Ona tanımlama yapma zorunluluğumuzun ortadan kalkması ona sahip olmama zorunluluğu şeklinde algılanmamalı arkadaşlar. Servlet 3.0 öncesi meselesine de değineceğim az sonra.

Önceki yazıda da bahsettiğim üzere eğer bir Wildfly Application Server kullanıyorsanız (son sürüm kullanmanızı tavsiye ederim) Rest Easy için gerekli bağımlılıkların tamamına yakını size sunulmuş olacak. Eğer Glassfish, Tomcat, weblogic vs. kullanıyorsanız bağımlılıkları sizin eklemeniz gerekecek. Bu durumda Rest Easy kullanırken onun Servlet Inıtializer özelliğini kullanmak için şu bağımlılığı kullanabilirsiniz:

<dependency>
   <groupId>org.jboss.resteasy</groupId>
   <artifactId>resteasy-servlet-initializer</artifactId>
   <version>3.0.16.Final</version>
</dependency>

Bu bağımlılık sizi web.xml içerisinde tanımlama yapmaktan kurtaracak.

Akabinde az önce bahsettiğim gibi web.xml içine değil Java kodu ile derdimizi halletme noktasına geçebiliriz. Bunun için de şöyle bir kod işimizi görür:

import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application;

@ApplicationPath("root-path")
public class MyApplication extends Application
{
}

MyApplication sınıfımız içerisinde dikkatinizi sınıfın işaretlendiği notasyona çekmek istiyorum. @ApplicationPath notasyonuna parametre olarak verilen String ifadesi bizim web servisimiz için tanımadığımız bir kök yoldur arkadaşlar. Gelecek derste bu konuyu bir adım öteye götüreceğiz ancak şunu söyliyeyim ki yazacağımız web servis bu kök yolun altında çalışacak.

Servlet 3.0 ve sonrası için yukarıdaki kısım Rest Servlet tanıtımı için yeterli. Şimdi Servlet 3.0 öncesi meselesine bakalım.

Normalde şu an sizin kullandığınız IDE’lerinizin ve uygulama sunucularınızın/katmanlarınızın son sürümde olduğunu ve güncel versiyonlarını kullandığınızı varsayıyorum arkadaşlar. Ancak bu noktaya da değinmeden geçmek istemedim. Servlet 3.0 öncesi için bu notasyon ile tanıtma vs. çalışmıyor arkadaşlar. Gidip web.xml’e yazmamız gerekiyor. web.xml’e yazacağımız kod şu şekilde:

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <servlet-name>Resteasy</servlet-name>
        <servlet-class>
value>
    org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
<init-param>
    <param-name>javax.ws.rs.Application</param-name>
   <param-value>MyApplication</param-
</init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>Resteasy</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

Burada gerekli olan sınıflar Wildfly içerisinde bize sunulmuştur. Ama Wildfly dışında sunucu kullanacaksınız şu bağımlılık ile Rest Easy implementasyonunu elde ederken buradaki bağımlılıkları da elde edersiniz.

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>3.0.16.Final</version>
</dependency>

Bu yazıda da bu arkadaşlar. Rest Easy’nin Servlet Initializer konusunu öğrenmiş olduk. Gelecek yazıda ilk Rest kodumuzu yazıp çıktımızı alacağız. Gelecek yazıda görüşene kadar sağlıcakla kalın arkadaşlar.