# Anfängerfrage zu JEE Packaging & Deployment



## eagle1985 (4. Sep 2012)

Hallo zusammen,

habe da eine Frage zu Packaging in JEE.
In JEE6 habe ich ja für UI ein war und für die Business-Logic und Persitenz ein Jar mit den EJBs und JPA-Klassen.
In den Tutorials wird dies alles nun in ein WAR-Verpackt und anschliessend das War-File auf JBoss oder Glassfish deployed.
Soweit so gut.

Was wenn ich nun eine komplexere Applikation habe und nicht jedes mall alles neu verteilen will und evt so verteilen möchte:

2 unterschieliche war für UI-Frontend und UI-Administration
3 Jars: - Logik Frontend
           - Logik Backend
           - JPA

kann ich alles einzeln deployen?
Wie kann ich dan von einem JAR auf Klassen im anderen Jar zugreifen? Respektive worauf muss ich da achten?

Gruss eagle

PS: Konkret wird mit JEE6, Eclipse, JBOSS AS 7.1 und Maven experimentiert.


----------



## Andgalf (4. Sep 2012)

Für solche Fälle erstellt man ein EAR (Enterprise Java Archiv) einfach mal nach googlen


----------



## eagle1985 (4. Sep 2012)

Hallo Andgalf,

danke für die Antwort.
Sorry hab mich oben vertan. Meinte ich will keine unabhängigen EAR verwenden da diese soweit ich weiss nicht auf inhalt anderer Ears zugreifen können.

Folgende ausgangslage währe hier:
2 Unterschiedliche Webanwendungen: eine für User + eine für Admins (weiss macht keinen sinn, nur übungshalber  )
Also habe ich 2 wars für das UI welche je zu einem EAR gehören. soweit so gut.
Nun will ich jedoch die EJBs nur 1 mal deployen also das beide WARS auf daselbe JAR zugreifen.

Möchte also Quasi Module deployen bei welcher jede Anwendung auf die Jars zugreift welche sie benötigt. Heisst auch ich muss nicht JARs doppelt verteillen, wenn 2 anwendungen auf die selben Module/Komponenten zugreifen wollen.

Geht dies mit JEE oder muss ich da JEE mit OSGI verbinden?

Gruss


----------



## Andgalf (4. Sep 2012)

Das sollte eigentlich gehen aber dafür müsstest Du sogenannte client-jars erstellen, die dann nur die Interfaces der entsprechenden Java Klassen enthalten, da ja sonst der code in deinem war nicht compile fähig ist.

Die Struktur wäre dann also war-file-A und war-file-B werden mit dem client-jar gebundelt, die Implementierungen zu dem client jar werden unabhängig auf dem Server deployt.

Für genauere Informationen müsste ich auch googlen, da ich das selbst noch nie ausprobiert hab.


----------



## Sym (4. Sep 2012)

eagle1985 hat gesagt.:


> Was wenn ich nun eine komplexere Applikation habe und nicht jedes mall alles neu verteilen will und evt so verteilen möchte:
> 
> 2 unterschieliche war für UI-Frontend und UI-Administration
> 3 Jars: - Logik Frontend
> ...


Ich verstehe nicht, warum das nicht in ein war gepackt werden soll. Kannst Du das näher erläutern, was Deine Probleme dabei sind?

Unterschiedliche wars bündelt man eigentlich in einem ear, dann kennen sich diese auch. Andernfalls wäre das wohl sehr serverabhängig.


----------



## eagle1985 (4. Sep 2012)

Es ist nicht so, dass ich es nicht in ein EAR packen kann.
Für mein Übungsprojekt der FH ist dies auch kein Problem.

Es geht nur darum, dass ich wissen möchte ob ich eine Enterprise Applikatikation auch Komponenten orientiert verteilen kann.
Heisst wenn eine Klasse ändert, dass ich nicht die ganze Applikation neu Deployen muss, sondern nur eben diese eine Komponente/Modul.

Kann mir eben gut vorstellen, dass bei grösseren Unternehmen die einzelnen Enterprise Applikationen doch grösser sein können ;-)
Und evt. mehrere unterschiedliche Applikationen selbe Module verwenden möchten. Bei EAR müsste ich die Dependency Jars ja in jedme EAR neu mitpacken.
BSP: LogFramework wird von App A und App B verwendet. Heisst also ich hab das Jar einmal in AppA.ear und einmal in AppB.ear was bedeuten würde, wenn ich das Jar ändere muss ich die komplette App A und B neu deployen.

Nochmal, will nur Wissen ob und wie dies geht. Nicht so dass alles zusammengehörige in ein EAR nicht funktioniert.

Reine Neugier


----------



## Sym (4. Sep 2012)

Normalerweise deployed man das ganze Artefakt. Wenn Du die einzeln deployen möchtest, musst Du ja trotzdem sicherstellen, dass die entsprechenden Clients das Modul auch verstehen.


----------



## Andgalf (4. Sep 2012)

Sym hat gesagt.:


> Wenn Du die einzeln deployen möchtest, musst Du ja trotzdem sicherstellen, dass die entsprechenden Clients das Modul auch verstehen.



siehe mein zweiter Post hier


----------



## eagle1985 (4. Sep 2012)

Danke euch beiden,

werd mich mal über diese client-jars schlaumachen


----------

