Leo this y this que están relacionados de alguna manera con mi pregunta. Pero encontré el artículo this que dice que los EJB se pueden empaquetar en un archivo war. Si este es el caso, ¿por qué hay necesidad de una oreja? Una explicación con un ejemplo será muy apreciada.¿Por qué utilizar una oreja en lugar de una guerra?
Respuesta
El uso de EAR o WAR depende del servidor que desea implementar, su aplicación y sus preferencias personales. Desde Java EE6 puede empaquetar sus EJB junto con otros servlets, jsps, etc. en el archivo WAR (termina con la aplicación web que puede implementar solo en el servidor compatible java ee 6). Si empaqueta su aplicación de la manera anterior con ejbs en un paquete separado y war por separado, puede usar el servidor java ee 5 si no ha utilizado otras funciones de java ee6 dentro de su aplicación, puede separar las implementaciones de sus EJB y WAR tener una clara separación de su capa de negocios (EJB) y su vista (Servlets, JSP, etc.).
El uso de un EAR permite una separación limpia entre el negocio (por lo general sin estado EJB granos que proporcionan servicios de back-end/relacionados con DB-y pueden en principio ser utilizados por los clientes no web) y de extremo frontal (XHTML archivos, JSF respaldo de frijoles, etc.).
normalmente seguir a la convención a continuación, para un proyecto determinado, por ejemplo "foo":
- foo-ejb.jar tiene los beans EJB
- foo-client.jar define el interfaz de los beans EJB (' cliente 'puede ser un término equivocado,' foo-if.jar 'o' foo-api.jar' pueden ser mejores nombres)
- foo-war.war tiene los recursos web
Edificio foo-war.war sólo requiere foo-client.jar
Edificio foo-ejb.jar sólo requiere foo-client.jar.
La estructura de la EAR es:
foo.ear
|
|-- foo-war.war
|
|-- foo-ejb.jar
|
\-- lib
|---- foo-client.jar
|
\---- (other common jars)
Hay quizá una manera de tener una separación de manera similar limpia cuando el código se implementa como una guerrapero lo anterior es lo que estoy utilizando y parece que funciona para mí (estoy abierto a sugerencias por supuesto).
La plataforma Java EE utiliza un modelo distribuido de aplicaciones de varios niveles para aplicaciones empresariales. La lógica de la aplicación se divide en componentes según la función, y los componentes de la aplicación que componen una aplicación Java EE se instalan en varias máquinas, dependiendo del nivel en el entorno de múltiples capas de Java EE al que pertenece el componente de la aplicación.
La siguiente imagen muestra dos aplicaciones de varios niveles de Java EE divididas en los niveles que se describen en la siguiente lista. Las partes de la aplicación Java EE que se muestran en esta imagen se presentan en Componentes de Java EE.
Los componentes de nivel de cliente se ejecutan en la máquina del cliente.
Los componentes de nivel web se ejecutan en el servidor Java EE.
Los componentes de nivel empresarial se ejecutan en el servidor Java EE.
El software del sistema de información empresarial (EIS) se ejecuta en el servidor EIS
.
Aunque una aplicación Java EE puede consistir en todos los niveles mostrados en la Figura 1-1, las aplicaciones de varios niveles de Java EE se consideran generalmente ser aplicaciones de tres niveles, ya que están distribuidos en tres lugares: máquinas cliente, el Java Máquina de servidor EE y la base de datos o máquinas heredadas en el back-end. Las aplicaciones de tres niveles que se ejecutan de esta manera amplían el modelo estándar de cliente y servidor de dos niveles al colocar un servidor de aplicaciones multiproceso entre la aplicación cliente y el almacenamiento de fondo.
Así que por lo general queremos tener 2 o 3 capas separadas:
-auriculoterapia (E mpresa Aplicación AR cebolleta)
-EJB (E mpresaJ ava B eans)
-Guerra (W ebAR cebolleta)
ya veces APP (J avaP ersistance Un PI)
espero que encuentre útil, Gracias.
- 1. crear oreja en grial
- 2. ¿Por qué utilizar TagBuilder en lugar de StringBuilder?
- 3. ¿Por qué utilizar JOIN en lugar de consultas internas
- 4. ¿Por qué utilizar singleton en lugar de clase estática?
- 5. ¿Por qué utilizar jQuery en() en lugar de clic()
- 6. ¿Por qué utilizar campos en lugar de propiedades?
- 7. ¿Por qué utilizar un singleton en lugar de métodos estáticos?
- 8. ¿Por qué utilizar EventArgs.Empty en lugar de null?
- 9. Evita printStackTrace(); utilizar una llamada registrador lugar
- 10. Implementar una guerra para tomcat
- 11. Embalaje de archivos Javascript en una guerra?
- 12. ¿Por qué debería usar WCF en lugar de MVC al construir una API REST?
- 13. ¿Por qué std :: es utilizado por codificadores experimentados en lugar de utilizar namespace std ;?
- 14. ¿Por qué es malo para utilizar una variable de iteración en una expresión lambda
- 15. ¿Por qué bloquear en lugar de buclear?
- 16. ¿Qué colección utilizar en lugar de matriz 2D en Java?
- 17. ¿Por qué no utilizar Html.EditorForModel()
- 18. ¿Por qué utilizar Redis en lugar de MongoDb para el almacenamiento en caché?
- 19. ¿Por qué Clojure tiene 5 formas de definir una clase en lugar de solo una?
- 20. ¿Por qué guava Multimap.values () devuelve una colección plana en lugar de una colección de colecciones?
- 21. por qué utilizar StringBuffer en Java en lugar del operador de concatenación de cadenas
- 22. ¿Deben incluirse los controladores JDBC en una GUERRA?
- 23. ¿Ventajas de utilizar una función miembro estática en lugar de una función miembro no estático equivalente?
- 24. ¿Por qué usar una clase abstracta vacía en lugar de una interfaz?
- 25. ¿Por qué elegir una clase estática en lugar de una implementación singleton?
- 26. ¿Por qué utilizar múltiples argumentos para registrar en lugar de interpolación?
- 27. ¿Por qué darcs en lugar de git?
- 28. ¿Por qué NDEBUG en lugar de RELEASE?
- 29. Cuándo utilizar Helpers en lugar de Partials
- 30. por qué utilizar 'html, body' para scrollTop en lugar de simplemente 'html'