Apache Tomcat, temel Java kurumsal (şimdi Jakarta EE) spesifikasyonlarını uygulayan uzun ömürlü, açık kaynaklı bir Java sunucu uygulaması kapsayıcısıdır. Cakarta Servlet, Jakarta Sunucu Sayfalarıve Jakarta WebSocket özellikler.
Tomcat ilk olarak Apache Yazılım Vakfı 1998’de, Java’nın kendisinden sadece dört yıl sonra. Tomcat, orijinal Java Servlet API ve JavaServer Pages spesifikasyonu için referans uygulaması olarak başladı. Bugün, iyi bir genişletilebilirliğe sahip, iyi test edilmiş ve kanıtlanmış bir çekirdek motora sahip olan en yaygın kullanılan Java uygulama sunucusu olmaya devam etmektedir.
Bu kısa girişte, birçok geliştiricinin Java web uygulamalarını çalıştırmak için neden Tomcat’i seçtiğini öğreneceksiniz. Tomcat’e ve nasıl kullanıldığına dair bir genel bakış, kurulum talimatları ve Tomcat kullanarak bir Java uygulamasını dağıtmanın dört yolu hakkında kısa bir kılavuz bulacaksınız.
Tomcat bir uygulama sunucusu mu yoksa bir web sunucusu mu?
Java ekosistemi birkaç tür uygulama sunucusunu destekler:
- A sunucu uygulaması kapsayıcısı öncelikle sunucu uygulamalarını barındırmak için kullanılan Jakarta Servlet belirtiminin bir uygulamasıdır.
- A Web sunucusu Apache gibi yerel sistemden dosya sunmak için tasarlanmış bir sunucudur.
- A Java kurumsal uygulama sunucusu Jakarta EE spesifikasyonunun eksiksiz bir uygulamasıdır.
Özünde, Tomcat bir sunucu uygulaması ve JSP kabıdır:
- A Java (veya Jakarta) sunucu uygulaması HTTP istekleri için uç noktaları tanımlar ve bunları işlemek üzere iş mantığı koduna yönlendirir.
- JSP, veya Jakarta Sunucu Sayfaları, sunucunun içindeki verileri ve istek ve yanıttan gelen bilgileri kullanarak HTML arabirimlerini tanımlamaya olanak tanıyan bir sunucu tarafı görüntüleme oluşturma teknolojisidir. Geliştirici olarak, sunucu uygulamasını veya JSP sayfasını yazarsınız, istekler ve yanıtlar için kurallar tanımlarsınız ve ardından yönlendirmeyi Tomcat’e bırakırsınız.
Tomcat ayrıca şunları içerir: çakal web sunucusu. Coyote, Tomcat’i Apache web sunucusuyla birlikte statik dosyalar sunmak için kullanmayı mümkün kılar (bundan biraz daha fazlası).
Tomcat’in genişletilmiş bir versiyonu, Mee, Jakarta Persistence API’si de dahil olmak üzere çok çeşitli Jakarta belirtimlerini ve yeteneklerini içerir. (TomEE Cakarta Web Profili 9.1 sertifikalı.)
Ardından, sunucu uygulamaları ve JSP’leri barındırmak için Tomcat’in nasıl kullanılacağına bakacağız.
Tomcat’i indirin ve yükleyin
Yazılım dünyasının ağarmış bir kadimi olan Tomcat, birkaç aktif sürüm mevcut. Çoğu amaç için en son kararlı sürümü kullanabilirsiniz.
Başlamak, Tomcat’in en son sürümünü indirin. Tomcat’i bir arşiv (.zip veya tar.gz) veya kurulu bir hizmet olarak indirme seçeneğiniz olacak. Windows’ta çalışmıyorsanız en iyi seçim size kalmış, bu durumda arşive gideceksiniz. Bu makale için arşivi kullanacağız.
Arşivi komut satırından aşağıdaki gibi bir araçla da indirebilirsiniz. wget
. Bu durumda, sadece şöyle bir komut girersiniz
wget
Tomcat için Windows kurulumu
Aşağıdaki talimatlar, bir arşivden yüklediğinizi varsayar. Windows çalıştırıyorsanız ve yükleyiciyi kullanmak istiyorsanız, indirmeniz yeterlidir. .exe
dosyalayın ve çalıştırın. Tomcat, kendisini makul varsayılanlara sahip bir hizmet olarak kuracaktır. Ardından kurulumun nerede olduğu konusunda sizi bilgilendirecek ve oradaki arşivi açmışsınız gibi ilerleyebilirsiniz.
Adım 1. Komut satırı kurulumu
Komut satırına gidin ve yazın gunzip apache-tomcat-10.0.22.tar.gz
bunu takiben tar -xf apache-tomcat-10.0.22.tar
. Bu komut aşağıdaki dizinleri oluşturur:
- /çöp Kutusu Tomcat’i yürütmek için komut dosyalarını içerir.
- /ağ uygulamaları uygulamalarınızı dağıtacağınız konumdur.
- /kütükler Tomcat’in günlüklerini çıkardığı yerdir. Tomcat’in günlüklerinin girdiğini unutmayın.
/logs/catalina.out
varsayılan olarak. Bu dosyayı, uygulamaya özel günlük dosyalarıyla bağlantılı sorunları ayıklamak için kullanabilirsiniz. - /lib Tomcat’in JAR’ları aradığı yerdir. JPA gibi Tomcat’e dahil olmayan ek paketleri burada depolayacaksınız.
- /konf Tomcat için kullanıcı ve rol eklemek gibi şeyler yapabileceğiniz Tomcat için yapılandırma XML’idir.
Adım 2. Tomcat’i Başlatın
Tomcat’i bir hizmet olarak yüklediyseniz, zaten çalışıyordur. Aksi takdirde, devam edin ve girerek başlatın. ./catalina.sh start
komut satırında. (Mevcut komutların tümünü görmek için herhangi bir argüman olmadan “./catalina.sh” yazın.) Şimdi, Şekil 1’de gösterildiği gibi bir tarayıcıda Tomcat’in karşılama ekranına göz atabilmeniz gerekir.
Şekil 1. Tomcat karşılama sayfası.
Tomcat’te bir uygulama nasıl dağıtılır
Tomcat’ın webapps
dizin, uygulamalarınızı dağıtacağınız yerdir. Oraya bir .war dosyası bırakabilirsiniz ve Tomcat onu çalıştıracaktır. Bir .war dosyası, bir web uygulaması kaynağı için standart pakettir; temelde bir Java arşivi (.jar) dosyasıdır ve kapsayıcıya onu nasıl çalıştıracağını söyleyen bazı ek dosyalar vardır.
Ardından, Tomcat’te statik dosyaları ve web uygulamalarını dağıtmanın üç ek yolunu inceleyeceğiz.
Patlatılmış dağıtım
“Patlamış” bir web uygulaması, bir .war dosyasına sıkıştırılmamış, yani dizinlerde ve dosyalarda düzenlenmiş tüm öğeleri hala içerdiği anlamına gelir. Paketini açtığınız Tomcat arşivi, bu şekilde konuşlandırılmış birkaç örnekle birlikte gönderilir. /webapps/examples
dizin. Patlatılmış dağıtımın avantajı, oradaki dosyalara sıkıştırma konusunda endişelenmeden bakabilmenizdir.
şuraya giderseniz http://localhost:8080/örnekler, bağlantıların bir listesini bulacaksınız. Bu sayfa Tomcat tarafından şuradan oluşturulmuştur: /webapps/examples/index.html
dosya. Tomcat, Tomcat’in Coyote motorunun bir web sunucusu görevi gören bir örneği olan dosya sisteminden bir HTML dosyası sunuyor.
Bu sayfadaki örnekler, Tomcat’in sunucu uygulamaları, JSP’ler ve WebSockets sunma yeteneklerine iyi bir genel bakış sağlar. Tomcat ayrıca varsayılan olarak aşağıdakiler altında bulunan bir yönetim uygulaması içerir: /manager
yol. Diğer şeylerin yanı sıra bu uygulama, uygulamaları bir web konsolundan başlatmanıza, durdurmanıza ve yeniden dağıtmanıza olanak tanır.
Tomcat ile ters proxy
Tomcat, diskten statik dosyalar sunabilir (ve Nisan kitaplığı bunu daha verimli yapmak için) ancak Tomcat’i amiral gemisi ile birleştirmek de oldukça yaygındır. Apache web sunucusu (httpd) statik dosyalar için.
Tomcat ve Apache sunucusunu birlikte kullanmanın birkaç yolu vardır. Birincisi, Apache’nin statik dosya isteklerini ele aldığı ve ardından diğer kaynak isteklerini devrettiği “ters proxy” olarak bilinen şeydir (/webapp/**
, örneğin) Tomcat’e. Apache sunucusu daha sonra yanıtı istemciye geri iletir. Bu gerçekten yalnızca bir proxy’dir, ancak onu bir proxy’nin tipik istemci tarafı rolünden ayırt etmek için ters proxy olarak adlandırılır.
Apache yapılandırma dosyasını ayarlayarak bir ters proxy ayarlamak zor değildir. Basit bir yapılandırma bulundu burada.
Başka bir yaklaşım, meta veri benzeri başlıklarla uğraşmayı kolaylaştıran AJP (Apache JServe Protokolü) denilen şeyi kullanmaktır. AJP, aynı mimari kurulumuna (apache<->Tomcat) sahiptir ve ters proxy olarak nitelendirilir. Bu yaklaşım, bazı manuel çekişmeleri önler ancak önceden daha fazla yapılandırma gerektirir. AJP hakkında daha fazla bilgi edinebilirsiniz burada.
Benzer kurulumlar MicroSoft IIS ile mümkündür.
Gömülü Erkek Kedi
Uzun zamandır, iskele gömülü sunucu olarak çalışabilen tek sunucuydu. Bu değişti ve şimdi Tomcat gömülü olarak da çalışabilir. Katıştırılmış bir sunucu kullanmanın fikri, şu ana kadar gördüğünüz gibi, uygulama dosyalarını içeren sunucu yerine, sunucu yeteneklerini çağıran ana sınıfa (yani bağımsız bir Java uygulaması) sahip bir uygulamanız olmasıdır. kod tabanının içinde. Genel olarak, bu daha basit ve taşınabilir bir geliştirme modeli sunuyor ve hızla norm haline geldi. (Örneğin Spring Boot, geliştirme modunda çalışan gömülü bir Tomcat örneği kullanır.)
Gömülü bir sunucu çalıştırmak, hem uygulama hem de sunucu dağıtımı yerine artık yalnızca tek bir bileşenle (uygulama) ilgilendiğiniz için işlemler açısından net bir basitlik sağlayabilir. Öte yandan, Tomcat’in bağımsız bir ana bilgisayar olarak çalıştığı kurulum hala çok yaygın.
Tomcat’i gömülü olarak çalıştırmak için sunucu kitaplıklarını Maven veya Gradle gibi bir bağımlılık yöneticisi aracılığıyla dahil edersiniz. Ardından, Liste 1’de gösterildiği gibi sunucuyu programlı olarak kod içinde başlatırsınız.
Liste 1. Gömülü Tomcat
package foo;
import java.io.File;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.DirResourceSet;
import org.apache.catalina.webresources.StandardRoot;
public class Main {
public static void main(String[] args) throws Exception {
Tomcat tomcat = new Tomcat();
tomcat.setPort(Integer.valueOf(8080));
StandardContext ctx = (StandardContext) tomcat.addWebapp(" new File("src/main/webapp/").getAbsolutePath());
File additionWebInfClasses = new File("target/classes");
WebResourceRoot resources = new StandardRoot(ctx);
resources.addPreResources(new DirResourceSet(resources, "/WEB-INF/classes",
additionWebInfClasses.getAbsolutePath(), "
ctx.setResources(resources);
tomcat.start();
tomcat.getServer().await();
}
}
Liste 1’in ana noktası, bir Tomcat nesnesinin örneğini oluşturmak ve ona dinlenecek bağlantı noktası ve uygulama ve sınıf dosyalarının konumu gibi gerekli parametreleri sağlamak ve ardından sunucuyu başlatmaktır. Tomcat’i yerleşik sunucu olarak çalıştırma hakkında daha fazla bilgi edinebilirsiniz. burada.
Tomcat ve TomEE
Tomcat ile standart Java EE veya Jakarta EE özelliklerinden daha fazlasını kullanmak istiyorsanız, bir seçenek bu kitaplıkları Tomcat’e veya uygulama bağımlılıklarınıza eklemektir. Başka bir seçenek kullanıyor Mee. TomEE, popüler JPA dahil olmak üzere ek Java kurumsal desteğine sahip aynı Tomcat motorudur ve CDI API’ler. TomEE’nin spesifikasyonu aşağıdakilere dayanmaktadır: Java EE web profilibu yüzden size Tomcat’ten daha fazlasını verir, ancak tam gelişmiş bir Java EE uygulama sunucusu değildir. Vahşi Sinek veya CamBalık.
Tomcat diğer sunucularla nasıl karşılaştırılır?
Tomcat’in diğer sunucularla nasıl karşılaştırıldığını merak edebilirsiniz. Aşağıda hızlıca bir göz atalım.
Tomcat, İskeleye Karşı
Tomcat’e bir alternatif olarak Jetty, performansa odaklanma eğilimindeyken Tomcat, Jakarta EE spesifikasyonlarıyla güncel kalmaya odaklanır. Jetty, gömülü bir sunucu uygulaması kapsayıcısını çalıştırmayı yaygınlaştırmasıyla da bilinir. Tomcat gibi Jetty de eklentilerle genişletilebilen bir çekirdek sunucu uygulaması/JSP motoru sunar. Genel olarak, Tomcat daha popüler olmaya devam ediyor ancak ikisi de sağlam seçenekler.
Tomcat vs Nginx
Nginx, popüler, yüksek performanslı bir web sunucusudur. Yetenekleri bakımından Apache web sunucusuna benzer. Nginx, Tomcat ile bir ters proxy sunucusu olarak da kullanılabilir.
Tomcat vs WildFly
WildFly, Red Hat’in Jakarta EE uygulamasıdır. Aynı zamanda uzun süredir devam eden bir projedir (önceden JBoss olarak bilinirdi) ve bir zamanlar Tomcat’i Servlet/JSP konteyneri olarak kullandı.
Tomcat vs Httpd
Httpd, daha önce tartışılan Apache web sunucusunun başka bir adıdır. Httpd, Apache web sunucusundaki işlem adıdır. Bu sunucuyu Tomcat ile ters proxy olarak kullanabilirsiniz.
Çözüm
Tomcat, değişime ayak uydurarak ve web uygulamalarını dağıtmak için sağlam ve güvenilir bir platform sunarak aktif olarak geliştirilmeye devam ediyor. Hem devam eden popülaritesi hem de birçok PaaS sistemi için varsayılan Java platformu olarak seçilmesi, devam eden başarısının kanıtıdır.
Telif Hakkı © 2022 IDG Communications, Inc.
Kaynak : https://www.infoworld.com/article/3510460/what-is-apache-tomcat-the-original-java-servlet-container.html#tk.rss_all