# Einige Fragen zu JEE



## mavinatic (20. Jul 2012)

Hallo Community,

ich bin dabei eine JEE Anwendung zu entwickeln, dabei geht es darum, dass ich möglichst viel Erfahrung sammeln kann.

Ich habe ein paar generelle Fragen:

1) Ich benutze TomEE, welches über CDI verfügt, wieso sollte man jetzt noch Spring nutzen bzw. was von beiden ist wieso besser?

2) Ich benötige eine Konfigurationsdatei. Ich möchte Sie irgendwie auf der Festplatte ablegen, mit einem WAR-Archiv ist es schwer die Konfigurationsdatei in den Projekt-Ordner zu schieben. Wie mache ich am besten Konfigurationsdateien für große JEE Anwendungen.

3) Gibt es irgendwo große JEE - Anwendungen, wo ich mir etwas "abgucken" könnte?

Gruß


----------



## F.S.WhiTeY (21. Jul 2012)

Zu 1 kann ich nichts sagen.

Zu 2.: Warum solltest du eine Konfigurationsdatei nicht per WAR in dein Projekt schieben können? Deine faces-context.xml, deine persistence.xml oder diverse andere Konfigurationsdateien werden doch auch in den Projektordner geschoben wenn du deployst. 

In drei schritten zu einer eigenen Konfigurationsdatei:

1.: Datei definieren und anlegen
2.: In den gewünschten Ordner innerhalb des projectes verschieben, wenn ordner nicht vorhanden -> anlegen.
3.: Deployen und Spaß haben...

Ich bekomme jede Datei die ich will per deploy in meinen Projectordner... also kannst du das auch.
Wichtig ist nur die Rechtevergabe für die Konfiguration. Wäre doof wenn ein externer User das ding im Browser öffnen dürfte  

zu 3.: Da gibt es einige, allerdings wirst du die wohl eher selten als Source bekommen. J2EE findest du bei Banken (blsk.de), Versicherungen (z.B. R+V) und dieversen anderen Unternehmen. Ein großes Open Source projekt ist mir ersönlich nicht bekannt. Allerdings schreibe ich gerade selber eins was Open Source wird. Allerdings werde ich das zu diesem Zeitpunkt noch nicht raus geben, da muss du bis ende September warten. 


HTH

David


----------



## DerFeivel (21. Jul 2012)

Zu 1.:   Spring stellt dir ja nicht nur nen DI-Container zur Verfügung. Zusätzlich hast du noch weitere sinnvolle Abstraktionen fur einige der gängigsten Aufgaben und APIs im EE Umfeld. Mir fällt da spontan jms, jmx, spring-mvc oder auch "Konzepte" wie der conversionservice oder auch i18n ein. Einmal eingearbeitet geht dir damit die Entwicklung wahrscheinlich schneller von der Hand als mit dem Standard.

Zu 3. : Schau dir evt. Mal das Java-Magazin an. Dort werden ab und an auch mal größere bspprojekte mit Quellen vorgestellt. Pers. würde ich aber erstmal klein anfangen


----------



## mavinatic (22. Jul 2012)

@F.S. WhiTey: Aber ich muss die persistence.xml nicht immer neu compilieren und nur selten anpassen, weil bei alles im Tomcat angepasst wird.


----------



## F.S.WhiTeY (22. Jul 2012)

Deine Antwort entzieht sich meiner logik... seit wann musst du eine Konfigurationsdatei Compilieren?
Eine Konfigurationsdatei steht im Normalfall im Klartext und/oder in xml. Da wird nichts compiliert! Die wird lediglich interpretiert. Und das die persistence.xml vom Tomcat angepasst wird ist, sry das ich das so deutlich sagen muss, Schwachsinn. 

Also endweder reden wir aneinander vorbei oder einer von uns beiden hat absolut keine Ahnung.

LG


----------



## mavinatic (22. Jul 2012)

Bei mir befindet sich die persistence.xml in dem META-INF Verzeichnis und wenn ich mein Projekt ausführen will muss ich alles compilieren und packen ;-) (Du hast recht die XML Datei nicht, aber java-classes).
Zudem wird bei mir Tomcat mit der Datasource definiert....
Aber wenn ich eine "Normale" Konfigurationsdatei in das Projektverzeichnis speicher, dann muss ich jedes mal das Projekt neubauen?!


----------



## DerFeivel (22. Jul 2012)

Dein War/Jar ist kein Kompilat. Es ist lediglich ein gepacktes Verzeichnis.

Benenne das .war einfach mal in eine Zip um oder öffne es mit einem Komprimierer wie bspw. 7-Zip.
Und wenn du schonmal mit 7-Zip dabei bist, kannst du auch gleich mal die persistence.xml damit ändern


----------



## F.S.WhiTeY (22. Jul 2012)

natürlich musst du neu deployen wenn du was änderst aber du kannst ja auch die konfig im tomcat verzeichniss ändern.

worüber reden wir denn hier? eine änderung wärend der entwicklung oder im laufenden betrieb?

ich glaub du weisst nicht so recht was da im hintergrund abläuft wenn du dein project deployst.


----------



## JanHH (23. Jul 2012)

Du musst das war-Archiv auch nicht in gepackter Form haben. Anstelle einer Datei "abc.war" kannst Du auch alles entpacken in ein Verzeichnis "abc.war". Hauptsache die Verzeichnisstruktur bleibt erhalten.


----------



## freez (23. Jul 2012)

mavinatic hat gesagt.:


> Ich benötige eine Konfigurationsdatei. Ich möchte Sie irgendwie auf der Festplatte ablegen, mit einem WAR-Archiv ist es schwer die Konfigurationsdatei in den Projekt-Ordner zu schieben. Wie mache ich am besten Konfigurationsdateien für große JEE Anwendungen.



Vielleicht solltest du mal dazu sagen, wer die Konfiguration anpassen soll. Es ist nämlich ein Unterschied, ob du als Entwickler eine Konfigurationsänderung machst, oder der Systemadmin, der später das System betreut.

Du als Entwickler wirst Änderungen vornehmen, weil sich was in deiner Anwendung verändert => somit ist das XML File in deinem Projekt und du musst eh erneut deployen.

Als Systemadmin nimmst du in der Regel Einstellungen vor, die die Anwendung auf deinem System einrichtet (Pfade, E-Mail Adresse, Datenbankverbindungen ...usw.). Hier musst du schauen, wo es für dich am sinnvollsten wäre dieses File vorzufinden. Es wäre möglich es irgendwo im Homeverzeichnis des Users abzulegen unter dem der Server läuft, ein beliebiger Ordner, oder auch der Tomcat Conf Ordner. Das darfst du dir aussuchen. Ich würde auch eine Datenbank in Betracht ziehen, wenn du sowieso eine nutzt.


----------



## mavinatic (23. Jul 2012)

Der Systemadmin soll im Betrieb Änderungen vornehmen können. Aber da ich nicht wusste das im Tomcat...die Daten in der Verzeichnisstruktur erhalten bleiben....ist das ja alles kein Problem  Damit hat sich meien Frage erledigt.


----------



## freez (23. Jul 2012)

mavinatic hat gesagt.:


> Der Systemadmin soll im Betrieb Änderungen vornehmen können. Aber da ich nicht wusste das im Tomcat...die Daten in der Verzeichnisstruktur erhalten bleiben....ist das ja alles kein Problem



Hm, verstehe ich dich richtig, dass du das xml File für den Admin im Projekt lassen möchtest und der Admin sich dann über den Tomcat webapps Ordner durch deine Ordnerstruktur zu dem XML File hangelt  und dort die Änderungen vornehmen soll?

Was passiert wohl mit den Einstellungen des Admins, wenn du ein Update bereit stellst und der Admin das WAR File deployed?


----------



## maki (23. Jul 2012)

Um was für "Änderungen" bzw. Konfigurationen geht es denn?

Wenn der Admin Einstellungen ändern können soll, dann ist dafür WEB-INF/web.xml vorgesehen.


----------



## F.S.WhiTeY (23. Jul 2012)

@maki: ich denke er will apllikationsabhängige Konfigurationen vornehmen und daher will er eine eigene Konfig schreiben. Ich würde das auch trennen wollen wenn ich Konfigurationen vornehmen möchte die mit dem Framework als solches nichts zu tun haben. 


LG

David


----------



## mavinatic (23. Jul 2012)

Hallo, 

wie schon gesagt möchte ich eine Applikationsabhängige Konfigurationsdatei anbieten. Was wäre der beste Weg so etwas zu realisieren?


----------



## F.S.WhiTeY (23. Jul 2012)

1. Erstmal nen kopf darum machen wie die Datei aufgebaut sein soll. Am besten XML nehmen und von die Profies etwas abschauen

1.1 muss es denn ne Datei sein? Konfigurationen kann man auch in eine Datenbank schreiben was gewisse vorteile bei dem schon angesprochenen Update der SW hat.

2. Java.io. --> Datei einlesen, schreiben

3. Nach dem einlesen nen kopf um das Interpretieren machen.

4. Würde ich die Konfiguration bei einer Webanwendung in den Adminbereicht auslagern und eine "Webseite" dafür anbieten.

Soll ich dir nen UML Diagramm zeichnen ?


----------



## FArt (23. Jul 2012)

mavinatic hat gesagt.:


> Der Systemadmin soll im Betrieb Änderungen vornehmen können. Aber da ich nicht wusste das im Tomcat...die Daten in der Verzeichnisstruktur erhalten bleiben....ist das ja alles kein Problem  Damit hat sich meien Frage erledigt.


Nein, ganz und gar nicht.

Heißt "im Betrieb" im laufenden Betrieb? Das ist Hot-Deployment. Kann der Container und vor allem auch die Applikation damit umgehen (laufende Calls, laufende Sessions, ...) ?
Da ist u.U. schon ein wenig Aufwand nötig.


----------



## mavinatic (23. Jul 2012)

Die Datei soll einfach bei Start von Tomcat eingelesen werden. Ihr habt mir schon geholfen ich weiß nun wie ich das mache ;-)

Danke


----------

