2013-06-19 8 views
38

Sono relativamente nuovo a Java EE/EJB e ho letto molto sui contenitori Java EE. Ho avuto esperienza di lavoro con un contenitore web (file WAR in jboss). Sono anche consapevole del fatto che Jboss può essere utilizzato anche come contenitore Java EE.Contenitori Java EE vs Contenitori Web

La mia domanda è, qual è la differenza tra un contenitore Java EE rispetto a un contenitore Web?

So che Java EE è anche in grado di contenere un file .war. Sono diversi e quali sono le loro differenze? Ci sono preferenze specifiche del vendor specifico che è meglio?

risposta

78

Prima di tutto, "J2EE" è un'abbreviazione obsoleta, ora viene semplicemente chiamato "Java Enterprise Edition" o Java EE.

Contrariamente al contenitore servlet (ad esempio Tomcat), i server applicazioni Java EE "completi" contengono anche un contenitore EJB. EJB sono Enterprise Java Beans e puoi leggere molto su di loro ad esempio here (capitolo IV). Gli EJB sono ora nella versione 3.2 (Java EE 7 e Java EE 8), le versioni precedenti sono 3.1 (Java EE 6) e 3.0 (Java EE 5); tuttavia la più grande differenza è tra v2 e v3.

Gli EJB sono progettati per mantenere una logica aziendale dell'applicazione. Ad esempio, il bean di sessione stateless può calcolare qualcosa o rappresentare un servizio Web o qualsiasi altra cosa l'applicazione deve fare. I bean basati sui messaggi possono essere ascoltati nelle code dei messaggi, pertanto sono utili se si desidera una comunicazione asincrona. I bean singleton garantiscono un'istanza per bean, ecc.

Per quanto riguarda il tipo di file, EJB è contenuto in un file .jar, applicazione Web in un file .war e, se si desidera unirli in una singola applicazione, sarebbe il file .ear ("archivio aziendale").

Accanto a EJB, "pieno" application server si occupa anche sulle transazioni, la sicurezza, le risorse JDBC ... Mi raccomando di usarlo su un servlet container, ma i benefici venire con la complessità in modo da avere per trascorrere una ragionevole quantità di tempo per imparare come comportarsi ad es Websphere (Payara e WildFly sono molto più semplici e sono i miei preferiti). JBoss e Weblogic sono anche molto popolari, e se hai familiarità con Tomcat dai un'occhiata a TomEE.

+0

+1 per la risposta completa, sto cercando un confronto tra i server delle applicazioni che hai citato. per quanto riguarda la complessità/facilità di integrazione, ecc. – mel3kings

+1

@ melt321 Felice di aiutare. Per quanto riguarda il confronto, ho lavorato solo con Websphere e Glassfish, quindi consiglierò altri articoli: http://hwellmann.blogspot.com/2011/06/java-ee-6-server-comparison.html, http://stackoverflow.com/questions/217827/which-is-the-best-open-source-application-server, http://stackoverflow.com/questions/1224822/websphere-vs-weblogic –

27

Contenitore Java EE: Gestisce l'esecuzione di EJB, JMS, JTA nell'esecuzione sul server Java EE ad es. JBoss, Glassfish.

Contenitore Web: Gestisce l'esecuzione di pagine Web, servlet e alcuni componenti EJB per applicazioni Java EE. I componenti Web e il loro contenitore vengono eseguiti sul server Web come Jetty, tomcat.

0

Penso che forse la differenza tra loro sono i protocolli che sostengono.

Per esempio, non proviamo a gestire la transazione in un contenitore web, come Tomcat, di solito cerchiamo di controllare nel web -proj distribuito in tomcat.while server web/app come ejb prende l'opposto

3

Il contenitore web e il contenitore EJB sono sottoinsiemi di contenitori Java EE. I contenitori Java EE comprendono anche il contenitore del client dell'applicazione e contenitore di applet.

Ecco ciò che il doc dice:

Il processo di distribuzione installa i componenti di applicazioni Java EE nei contenitori Java EE.

  • del server Java EE: La porzione runtime di un prodotto Java EE. Un server Java EE fornisce EJB [container e contenitore web] *.

  • Contenitore Enterprise JavaBeans (EJB): Gestisce l'esecuzione di bean enterprise per applicazioni Java EE. I bean enterprise e il loro contenitore vengono eseguiti sul server Java EE.

  • Contenitore Web: Gestisce l'esecuzione della pagina JSP e dei componenti servlet per le applicazioni Java EE. I componenti Web e il loro contenitore vengono eseguiti sul server Java EE.

  • Contenitore client applicazione: gestisce l'esecuzione dei componenti client dell'applicazione. I client delle applicazioni e il loro contenitore vengono eseguiti sul client.

  • Contenitore di applet: gestisce l'esecuzione di applet. È costituito da un browser Web e un plug-in Java in esecuzione sul client insieme.

* Nel documento si usa il modulo Plurial, ma in realtà hai solo un contenitore web e un contenitore EJB per server Java EE.

0

Un java EE Container è una soluzione server di applicazioni che supporta un contenitore Web, EJB 3 e altre API e servizi Java EE, server Oracle WebLogic, server GlassFish, server applicazioni IBM WebSphere, server applicazioni JBoss e Resina Caucho sono esempi di Contenitori Java EE ... Spero che risponda alla tua domanda