• Çar. Eki 20th, 2021

Merhabalar.

08.02.2020 tarihinde https://www.youtube.com/watch?v=ljC-1KmIAKY&t=28s adresinde bir Spring Boot uygulamasından WAR paketi elde edilip Tomcat’e deploy edilmesi konusunu anlatmıştım. Bu yazıda da videonun yazılı halini sizinle paylaşacağım.

Bildiğimiz gibi @SpringBootApplication notasyonu ile işaretli sınıftan Spring Boot uygulamamızı başlatabiliyoruz. Fakat uygulamadan bir WAR elde edip bir Tomcat’e deploy etme ihtiyacı duyduğumuzda sınıfımızda ayarlama yapmamız gerekecektir.

Şimdi benim elimde basit bir demo Spring Boot uygulaması var. Bu uygulamayı @SpringBootApplication notasyonu ile işaretli sınıftan başlattığım zaman http://localhost:8080/api/drivers adresi üzerinden erişebildiğim ve bana aşağıdaki bir cevap dönen servisim var.

Ben bu Spring Boot uygulamasından bir IDE içerisinde ya da komut satırı üzerinde mvn clean install komutunu çalıştırarak bir WAR dosyası elde ediyorum ve akabinde kullanacağım Tomcat’in webapps dizini altına elde ettiğim WAR dosyasını koyuyorum.

Kullanacağım Tomcat’in dizininin içindeki bin dizininde bir adet startup.bat dosyası yer alıyor. Komut satırı aracılığı ile bu dosyayı çalıştırdığımda webapps altında yer alan WAR dosyaları Tomcat’e deploy ediliyor. .bat dosyasını çalıştırdıktan sonra browser’dan http://localhost:8080/DemoSpringBootProject-1.0-SNAPSHOT/api/drivers adresine gittiğimde 404 Not Found hatası alıyorum.

Bunun sebebi de @SpringBootApplication notasyonu ile işaretli sınıfın konfigüre edilmemiş olmasıdır. Bu konfigürasyon işlemi de oldukça basit. Sınıfımızı aşağıdaki şekilde SpringBootServletInitializer sınıfından kalıtırsak ve configure metodunu da override edersek uygulamamız WAR elde edilip Tomcat’e deploy edilecek hale gelecektir.

package com.ilkaygunel;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

Bu değişiklik akabinde mevcut sunucuyu durdurup webapps dizini altındaki WAR dosyası ve deploy edilmiş klasörü silip mvn clean install komutu ile uygulamadan tekrar WAR dosyası elde ediyoruz ve webapps dizini altına bu WAR dosyasını koyup Tomcat’i yeniden başlatıyorum.

Şimdi tekrardan http://localhost:8080/DemoSpringBootProject-1.0-SNAPSHOT/api/drivers adresine istekte bulunduğumda uygulamanın çalıştığını görüyorum.

Bu yazıda anlatacağım da bu kadar arkadaşlar. Başka yazıda görüşene kadar sağlıcakla kalın.

NOT: Yazının kapak görseli https://miro.medium.com/max/484/0*RaNRmhPurMFdi6AI.png adresinden alınmıştır.

Merhaba! Ben İlkay Günel :) İstanbul Üniversitesi Bilgisayar Mühendisliği 2016 mezunuyum. Güncel olarak Paycore'da SoftPOS projesinde Java Developer olarak çalışmaktayım. Büyük oranda Java teknolojileri ile uğraşıp kendimi geliştirmeye çalışıyorum. Bu mecrada öğrendiklerimi sizle paylaşmaya da çabalıyorum :)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir