Örnek

Gömülü Jetty ve Jersey İle Rest Servisi

Jetty ile standalone (tek başına çalışan java uygulaması) bir rest uygulaması yapılabilir. Bunun için aşağıdaki gibi gerekli bağımlılıklar pom.xml'e eklenir:
<dependencies>
<dependency>
	<groupId>org.eclipse.jetty</groupId>
	<artifactId>jetty-server</artifactId>
	<version>9.4.6.v20170531</version>
</dependency>
<dependency>
	<groupId>org.eclipse.jetty</groupId>
	<artifactId>jetty-servlet</artifactId>
	<version>9.4.6.v20170531</version>
</dependency>
<dependency>
	<groupId>org.eclipse.jetty</groupId>
	<artifactId>jetty-util</artifactId>
	<version>9.4.6.v20170531</version>
</dependency>
<dependency>
	<groupId>org.glassfish.jersey.core</groupId>
	<artifactId>jersey-server</artifactId>
	<version>2.25.1</version>
</dependency>
<dependency>
	<groupId>org.glassfish.jersey.containers</groupId>
	<artifactId>jersey-container-servlet-core</artifactId>
	<version>2.25.1</version>
</dependency>
<dependency>
	<groupId>org.glassfish.jersey.containers</groupId>
	<artifactId>jersey-container-jetty-http</artifactId>
	<version>2.25.1</version>
</dependency>
<dependency>
	<groupId>org.glassfish.jersey.media</groupId>
	<artifactId>jersey-media-json-jackson</artifactId>
	<version>2.25.1</version>
</dependency>
</dependencies>
Jetty ve Jersey ile ilgili bağımlılıklar eklenmiştir.
Servis kodumuz aşağıdaki gibi olsun
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("msg")
public class MyMessage {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getMessage() {
        
        return "My message\n";
    }
    
    @GET
    @Path("j")
    @Produces(MediaType.APPLICATION_JSON)
    public String getMessageJson() {
        
        return "{\"message\":\"My message\"}";
    }
    
    @GET
    @Path("jo")
    @Produces(MediaType.APPLICATION_JSON)
    public MsgObj getMessageJsonObject() {
        
    	MsgObj msgObj=new MsgObj();
    	msgObj.setName("World");
    	msgObj.setTitle("Hello");
    	
        return msgObj;
    }
}
Üç tane servis metodu tanımlanmıştır ve GET ile mesaj ve nesne döndürmektedirler. Servis hazır olduğunda göre artık uygulamayı yapabiliriz :
import java.util.logging.Level;
import java.util.logging.Logger;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.glassfish.jersey.servlet.ServletContainer;
public class Main {
    public static void main(String[] args) {
        Server server = new Server(8080);
        ServletContextHandler ctx = 
                new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
                
        ctx.setContextPath("/");
        server.setHandler(ctx);
        ServletHolder serHol = ctx.addServlet(ServletContainer.class, "/rest/*");
        serHol.setInitOrder(1);
        serHol.setInitParameter("jersey.config.server.provider.packages", 
                "com.fibiler.services");
        try {
            server.start();
            server.join();
        } catch (Exception ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            server.destroy();
        }
    }
}

Uygulama çalıştırıldığında artık 8080 portu dinlenecektir. Tüm servislerin /rest/ şeklinde çağrılması gerekir. com.fibiler.services ile belirtilen servislerin bulunduğu pakettir. Servislerin paketi eklenmesi gerekmektedir. Uygulama çalıştığında ekranda aşağıdaki gibi bir mesaj gözükecektir:
2017-06-21 13:38:22.617:INFO::main: Logging initialized @552ms to org.eclipse.jetty.util.log.StdErrLog
2017-06-21 13:38:22.712:INFO:oejs.Server:main: jetty-9.4.6.v20170531
2017-06-21 13:38:23.421:INFO:oejsh.ContextHandler:main: Started o.e.j.s.ServletContextHandler@51bf5add{/,null,AVAILABLE}
2017-06-21 13:38:23.656:INFO:oejs.AbstractConnector:main: Started ServerConnector@72ef8d15{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
2017-06-21 13:38:23.656:INFO:oejs.Server:main: Started @1593ms
Artık servisleri
http://localhost:8080/rest/msg
http://localhost:8080/rest/msg/j
http://localhost:8080/rest/msg/jo
şeklinde çağırdığınızda cevap alabileceksiniz.
Bu örnek http://zetcode.com/articles/jerseyembeddedjetty/ sayfasından alınmıştır.
zafer.teker , 02.07.2020

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir