Uygulama sunucusu ile sunucu uygulaması kapsayıcısı arasındaki fark nedir?


115

Tam teşekküllü bir uygulama sunucusu (örn. Weblogic, JBoss vb.) İle bir servlet konteyneri (Tomcat, Jetty vb.) Arasındaki farkı anlamaya çalışıyorum.

Nasıl farklılık gösterirler ve hangisini ne zaman kullanırlar?

Teşekkürler,



@Jigar: Eğer bunun yinelediği kesin soruyu biliyorsanız , o zaman bir kopya olarak kapatmak için oy vermelisiniz.
Joachim Sauer

1
@Joachim Ben vermedi sona oy kullanırlar.
Jigar Joshi

2
çünkü bir kopya değil. :)
Bozho

1
oops ... beni görmezden gelmekte özgürsünüz, henüz gerekli kafein seviyeme ulaşmadım.
Joachim Sauer

Yanıtlar:


171

Bir sunucu uygulaması kapsayıcısı yalnızca sunucu uygulaması API'sini (JSP, JSTL dahil) destekler.

Bir uygulama sunucusu tüm JavaEE'yi destekler - EJB, JMS, CDI, JTA, servlet API (JSP, JSTL dahil), vb.

JavaEE teknolojilerinin çoğunu bir servlet-container üzerinde çalıştırmak mümkündür, ancak belirli teknolojinin bağımsız bir uygulamasını kurmanız gerekir.


1
Benim açımdan +1, Güzel farklılıklar. Daha fazla fark var @Bozho
Deepak

1
@Bozho: +1: Şimdiye kadar senin hakkında fark ettiğim bir şey, şaşırtıcı yanıtlarınıza sıklıkla dahil ettiğiniz basit terimler.
Shirgill Farhan

1
çok kullanışlı @Bozho
Xstian

@Bozho Servlet kapsayıcıları * uygulama sunucusunun "yetenek alt kümesine sahip sunucular olarak çağrılabilir. Ve derinlemesine aynı şekilde çalışırlar (her ikisi için ortak kullanım durumları için).
Kuldeep Yadav

15

Genel olarak konuşursak, bir servlet konteyneri, J2EE Servlet spesifikasyonunun uygulanmasıyla kendini aşağı yukarı sınırlar. Ayrıca, çalışma zamanı ortamına odaklanır ve ek araçlar sağlamaya çok fazla odaklanılmaz.

Bunun aksine, tam teşekküllü bir uygulama sunucusu tüm J2EE yığınını uygular; artı tüm girişimci araçlar ve entegrasyon olanakları ile birlikte gelir. Bir uygulama sunucusu genellikle gelişmiş yönetim arabirimlerine sahiptir, kümelemeyi ve çoğunlukla üst düzey sistem geliştirmede kullanılan diğer özellikleri destekler.

Yeni başlayanlar için, basit bir servlet kabında kalmak muhtemelen daha iyidir, çünkü oradaki öğrenme eğrisi çok daha az diktir.


Düzenle

@Apache Fan: Diğer şeylerin yanı sıra mevcut sistemler ve gelecek planları gibi durumunuzun özelliklerine bağlıdır. Burada genel bir akış şeması yaklaşımının uygulanabileceğini düşünmüyorum.

Platform seçimi genellikle söz konusu sistemlere ilişkin ilk elden bilgi ile belirli gereksinimleri tartarak yapılır.

Ancak soru, değerlendirme kriterlerinin ne olduğuna dair hiçbir ipucu vermez. Açık kaynak mı olmalı? 24 saat satıcı desteği gerekli mi? Sistem nasıl bir işletme ortamı ile entegre olmalıdır? Lisans ücretleri bir sorun mu? Sahip olunması gereken teknoloji veya araçlar var mı? Vb.

Yukarıdakileri bilmeden karanlıkta çekim yapmak neredeyse imkansızdır.


Kurumsal açıdan soruyorum.
Pushkar

11

Temel olarak Java EE bağlamındaki bir uygulama sunucusu , bir sunucuya yüklenmiş olan ve bir Java EE spesifikasyonunu (örneğin Java EE 7) uygulayan bir yazılımdır. Bu, söz konusu yazılımın (uygulama sunucusu) Java EE uygulamasını çalıştırabilmesi gerektiği anlamına gelir.

Java EE, kapsayıcılar adı verilen 4 etki alanını tanımlar :

  • Uygulama kabı,
  • Uygulama istemcisi kabı,
  • Web kapsayıcısı ve
  • EJB konteyneri.

İki kapsayıcı, uygulama sunucusunun bir parçasıdır (EJB ve Web kapsayıcısı) ve diğer ikisi istemci-bilgisayarın parçasıdır.

JBoss ve Weblogic uygulama sunucularıdır, Tomcat ve Jetty web kapsayıcısıdır. Bu nedenle JBoss ve Weblogic, bir Web kapsayıcısından daha fazla teknolojiyle başa çıkabilir. Uygulama sunucusu EJB'yi yönetebilir.

Servlet kapsayıcısı , daha kısıtlayıcı olduğu için nitelikli Tomcat ve Jetty için uygun bir ifade değildir . Tomcat, yalnızca Servlet'leri değil, JSP ve JSF'yi de çalıştırabilir.


2

afaik, websphere ve jboss, EJB gibi sunucu uygulamalarının ötesinde çalışabilen tamamen uyumlu j2ee-sunucusudur, oysa Tomcat sadece bir servlet konteynırdır ve EJB'leri çalıştıramazsınız.


o zaman Apache sunucusu hangi kategoriye girer?
yuvarlanan taş

Apache HTTP Sunucusu, tam gelişmiş bir Web Sunucusudur .
asgs

2

Layman terimleriyle: Bir web Sunucusu şu anlama gelir: HTTP isteklerini işleme (genellikle tarayıcılardan).

Servlet Container (örneğin Tomcat) şu anlama gelir: Servletleri ve JSP'yi işleyebilir.

Bir Uygulama Sunucusu (örneğin, GlassFish) şu anlama gelir: * Java EE uygulamalarını yönetebilir (genellikle hem sunucu uygulaması / JSP hem de EJB'ler).

Yeni başlayanlar için, basit bir servlet kabında kalmak muhtemelen daha iyidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.