# EAR vs WAR



## braindump23 (23. Nov 2013)

Hallo Leute, 

der Unterschied zwischen WAR und EAR ist mir nicht klar? 

Ich hätte gerne eine Trennung zwischen Client (also Darstellung) und Server (also Logik). Ist es möglich ein WAR für den Client und ein EAR für den Server auf einem JBoss As zu deployen wobei die Darstellungsschicht aus dem WAR auf die Logik die mit dem EAR deployt wurde zuzugreifen?

Hat jemand dazu ein Minimalbeispiel? Oder interessante Links?

Mfg
Braindump


----------



## RoNa (24. Nov 2013)

Hallo,

EAR und WAR werden beide aufm Server deployt. WAR ist Web Archive Web Archive ? Wikipedia und wird auf einem Servlet-Container wie Tomcat, Jetty, etc. deployt. EAR steht für Enterprise Archive Enterprise Archive ? Wikipedia und wird auf einem Application Server wie JBoss, Websphere, etc. deployt. Auf dem Client brauchst Du etwas, dass z.B. per HTTP auf die zugreift. Erklärungen und Beispiele findest Du unter - The Java EE 6 Tutorial

Gruß,

Robert


----------



## braindump23 (25. Nov 2013)

Hallo, 

zunächst danke dir für die Antwort.

Mich würde im Detail interessieren, wie ich Logik von der Darstellung bzgl. der Projektstruktur (Maven Multiprojekt) am besten trenne.
Ich würde gerne zunächst einen Teil mittels JSF umsetzen und später aber ggf. einen separaten Java-Client bauen der auf die Schnittstellen des Projektes zugreitft.

Klar was ich meine?

Gruß
Braindump


----------



## Marc T. (25. Nov 2013)

Das ist recht einfach umzusetzen.

Du hast ein Maven-Modul, in dem deine gesamte Logik drin ist. In dieser
Logik musst du aber natürlich auch mit den entsprechenden J2EE-Abhängigkeiten
arbeiten, damit du z.B. für JSF CDI verwenden kannst (Annotations wie 
@Named, @SessionScoped, usw.).

Dein Maven-Modul zur Darstellung deines Projekts, also deine View, muss 
dann das Maven-Modul deiner Logik als Dependency eingetragen haben.

Nun kannst du in deiner View, auf deine Logik zurückgreifen. Das ist 
ungefähr das gleiche, als würdest du eine jar zu deinem Projekt hinzufügen
und Klassen daraus verwenden.

Deine gesamte Logik kannst du ganz normal als Java EE Anwendung schreiben,
denn Java EE bringt bereits Mechanismen mit, die es erlauben, von vielen 
verschiedenen Clients aus, auf die Logik zuzugreifen.

Du kannst ein und die selbe Logik immer wieder verwenden für JSF, für mobile
Geräte, für Applets oder Swing Clients durch eine Annotation, die sich 
@Remote nennt.

Vielleicht kann dir das hier helfen: http://www.java-forum.org/allgemeines-ee/127486-einstieg-j2ee-remote-bean-zugreifen.html


----------

