Differenza tra un server delle applicazioni e un contenitore servlet?


115

Sto cercando di capire la differenza tra un server di applicazioni completo (ad esempio Weblogic, JBoss ecc.) E un contenitore servlet (Tomcat, Jetty ecc.).

In cosa differiscono e quando usare quale?

Grazie,



@ Jigar: se conosci la domanda precisa che questo duplica, dovresti effettivamente votare per chiuderlo come duplicato.
Joachim Sauer

1
@Joachim Non ho votato per chiudere.
Jigar Joshi

2
perché non è un duplicato. :)
Bozho

1
oops ... sentiti libero di ignorarmi, sembra che non abbia ancora raggiunto il livello di caffeina necessario.
Joachim Sauer

Risposte:


171

Un servlet-container supporta solo l'API servlet (inclusi JSP, JSTL).

Un server delle applicazioni supporta l'intero JavaEE: EJB, JMS, CDI, JTA, l'API servlet (inclusi JSP, JSTL), ecc.

È possibile eseguire la maggior parte delle tecnologie JavaEE su un servlet-container, ma è necessario installare un'implementazione autonoma della particolare tecnologia.


1
+1 da parte mia, Buone differenze Altre differenze @Bozho
Deepak

1
@Bozho: +1: Una cosa che ho notato finora di te sono i termini semplicistici che spesso incorpori nelle tue incredibili risposte.
Shirgill Farhan

1
è molto utile @Bozho
Xstian

@Bozho Possono i servlet-container essere chiamati come server con un sottoinsieme di capacità del * application server ". E in fondo funzionano in modo identico (per i casi d'uso comuni a entrambi).
Kuldeep Yadav

15

In generale, un contenitore servlet si limita più o meno all'implementazione della specifica J2EE Servlet. Inoltre, si concentra sull'ambiente di runtime e non tanto sulla fornitura di strumenti aggiuntivi.

Al contrario, un application server completo implementa l'intero stack J2EE; inoltre viene fornito con tutti gli strumenti aziendali e le possibilità di integrazione. Un server delle applicazioni di solito ha interfacce di amministrazione avanzate, supporta il clustering e altre funzionalità utilizzate principalmente nello sviluppo di sistemi di fascia alta.

Per un principiante, probabilmente è meglio rimanere con un semplice contenitore servlet, poiché la curva di apprendimento è molto meno ripida.


modificare

@Apache Fan: Dipende dalle specifiche della tua situazione come i sistemi esistenti e i piani futuri tra le altre cose. Non penso che un approccio generico a un diagramma di flusso sia applicabile qui.

La selezione della piattaforma viene solitamente effettuata valutando requisiti specifici rispetto alla conoscenza diretta dei sistemi in esame.

Tuttavia la domanda non fornisce indizi su quali siano i criteri di valutazione. Dovrebbe essere open source? È necessario il supporto del fornitore 24 ore su 24? Con che tipo di ambiente aziendale dovrebbe integrarsi il sistema? I costi di licenza sono un problema? Qualche tecnologia o strumento indispensabile? Eccetera.

Senza sapere quanto sopra, si sta praticamente sparando al buio.


Sto chiedendo da una prospettiva aziendale.
Pushkar

11

Fondamentalmente un server delle applicazioni nel contesto Java EE è un software installato su un server e che implementa una specifica Java EE (Java EE 7 per esempio). Ciò significa che tale software (server delle applicazioni) deve essere in grado di eseguire l'applicazione Java EE.

Java EE definisce 4 domini, i cosiddetti container :

  • Contenitore applet,
  • Contenitore client dell'applicazione,
  • Contenitore Web e
  • Contenitore EJB.

Due contenitori fanno parte del server delle applicazioni (EJB e contenitore Web) e altri due fanno parte del computer client.

JBoss e Weblogic sono server di applicazioni, Tomcat e Jetty sono contenitori web. Ecco perché JBoss e Weblogic possono gestire più tecnologie di un contenitore Web. Il server delle applicazioni può gestire EJB.

Il contenitore servlet non è l'espressione appropriata per Tomcat e Jetty qualificati perché è più restrittivo. Tomcat può anche eseguire JSP e JSF, non solo servlet.


2

afaik, websphere e jboss sono j2ee-server completamente conformi che possono essere eseguiti oltre i servlet, come EJB, mentre Tomcat è solo un contenitore di servlet e non è possibile eseguire EJB su di esso.


allora in quale categoria rientra il server Apache?
Rolling Stone

Apache HTTP Server è un server Web completo .
asgs

2

In termini Layman: un server web significa: gestire le richieste HTTP (di solito dai browser).

Un Servlet Container (es.Tomcat) significa: Può gestire servlet e JSP.

Un Application Server (es. GlassFish) significa: * Può gestire applicazioni Java EE (solitamente sia servlet / JSP che EJB).

Per un principiante, probabilmente è meglio rimanere con un semplice contenitore servlet.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.