Perbedaan antara server aplikasi dan wadah servlet?

115

Saya mencoba untuk memahami perbedaan antara server aplikasi yang lengkap (misalnya Weblogic, JBoss dll.) Dan wadah servlet (Tomcat, Jetty dll.).

Bagaimana perbedaannya dan kapan menggunakan yang mana?

Terima kasih,

Pushkar
sumber
@ Jigar: jika Anda tahu persis pertanyaan duplikat ini, maka Anda harus benar-benar memilih untuk menutupnya sebagai duplikat.
Joachim Sauer
1
@Joachim Saya tidak memilih untuk menutup.
Jigar Joshi
2
karena ini bukan duplikat. :)
Bozho
1
Ups ... jangan ragu untuk mengabaikan saya, sepertinya saya belum mencapai level kafein yang diperlukan.
Joachim Sauer

Jawaban:

171

Sebuah servlet-container hanya mendukung servlet API (termasuk JSP, JSTL).

Server aplikasi mendukung seluruh JavaEE - EJB, JMS, CDI, JTA, servlet API (termasuk JSP, JSTL), dll.

Dimungkinkan untuk menjalankan sebagian besar teknologi JavaEE pada servlet-container, tetapi Anda harus menginstal implementasi mandiri dari teknologi tertentu.

Bozho
sumber
1
+1 dari sisi saya, Perbedaan yang bagus. Ada lagi perbedaan @Bozho
Deepak
1
@Bozho: +1: Satu hal yang sejauh ini saya perhatikan tentang Anda adalah istilah sederhana yang sering Anda tanamkan dalam jawaban Anda yang luar biasa.
Shirgill Farhan
1
ini sangat berguna @Bozho
Xstian
@Bozho Bisakah servlet-containers dipanggil sebagai server dengan subset kemampuan * server aplikasi ". Dan jauh di lubuk hati mereka bekerja secara identik (untuk kasus penggunaan yang umum untuk keduanya).
Kuldeep Yadav
15

Secara umum, wadah servlet membatasi dirinya lebih atau kurang untuk implementasi spesifikasi Servlet J2EE. Selain itu, fokusnya adalah pada lingkungan runtime dan bukan pada penyediaan alat tambahan.

Sebaliknya, server aplikasi yang lengkap mengimplementasikan seluruh tumpukan J2EE; plus dilengkapi dengan semua alat dan kemungkinan integrasi. Server aplikasi biasanya memiliki antarmuka administrasi tingkat lanjut, mendukung pengelompokan dan fitur lain yang sebagian besar digunakan dalam pengembangan sistem kelas atas.

Untuk pemula, mungkin lebih baik tetap menggunakan wadah servlet sederhana, karena kurva belajarnya tidak terlalu curam.


Sunting

@Apache Fan: Itu tergantung pada spesifik situasi Anda seperti sistem yang ada dan rencana masa depan antara lain. Saya tidak berpikir pendekatan diagram alur umum dapat diterapkan di sini.

Pemilihan platform biasanya dilakukan dengan mempertimbangkan persyaratan khusus terhadap pengetahuan langsung dari sistem yang sedang dipertimbangkan.

Namun pertanyaan tersebut tidak memberikan petunjuk seperti apa kriteria evaluasi itu. Haruskah itu open source? Apakah dukungan vendor sepanjang waktu diperlukan? Jenis lingkungan perusahaan apa yang harus diintegrasikan dengan sistem? Apakah biaya lisensi menjadi masalah? Adakah teknologi atau alat yang harus dimiliki? Dll

Tanpa mengetahui hal di atas, cukup banyak memotret dalam kegelapan.

Saul
sumber
Saya bertanya dari perspektif perusahaan.
Pushkar
11

Pada dasarnya server aplikasi dalam konteks Java EE adalah perangkat lunak yang diinstal pada server dan mengimplementasikan satu spesifikasi Java EE (misalnya Java EE 7). Artinya software tersebut (application server) harus dapat menjalankan aplikasi Java EE.

Java EE mendefinisikan 4 domain, yang disebut kontainer :

  • Wadah applet,
  • Wadah klien aplikasi,
  • Penampung web, dan
  • Wadah EJB.

Dua kontainer adalah bagian dari server aplikasi (EJB dan kontainer Web) dan dua lainnya adalah bagian dari komputer klien.

JBoss dan Weblogic adalah server aplikasi, Tomcat dan Jetty adalah wadah web. Itulah mengapa JBoss dan Weblogic dapat menangani lebih banyak teknologi daripada wadah Web. Server aplikasi dapat mengelola EJB.

Kontainer servlet bukanlah ekspresi yang sesuai untuk Tomcat dan Jetty yang memenuhi syarat karena lebih ketat. Tomcat juga dapat menjalankan JSP dan JSF, tidak hanya Servlet.

nanachimi
sumber
2

afaik, websphere dan jboss sepenuhnya sesuai dengan j2ee-server yang dapat berjalan di luar servlet, seperti EJB, sedangkan Tomcat hanyalah sebuah wadah servlet dan Anda tidak dapat menjalankan EJB di atasnya.

asgs
sumber
lalu di bawah kategori mana server Apache berasal?
batu bergulir
Apache HTTP Server adalah penuh sesak nafas Web Server .
asgs
2

Dalam istilah Awam: Web Server artinya: Menangani permintaan HTTP (biasanya dari browser).

Sebuah Kontainer Servlet (misalnya Tomcat) berarti: Dapat menangani servlet & JSP.

Server Aplikasi (misalnya GlassFish) berarti: * Dapat mengelola aplikasi Java EE (biasanya servlet / JSP dan EJB).

Untuk pemula, mungkin lebih baik menggunakan wadah servlet sederhana.

Crroods
sumber