Java Umgebung ermitteln

gaunt

Lt. Commander
Registriert
Aug. 2007
Beiträge
2.016
Hi
mal ne kleine Frage. Ich schreibe gerade eine kleine Anwendung welche ne DB braucht, über Proxys nach draußen telefoniert usw...

Wie erkenne ich am besten ob ich auf meinem Entwicklungsrechner bin oder auf dem Live System? Hätte gerne eine Config welche je nachdem wo die Applikation läuft die Entwicklungs oder Live Parameter nutzt.

Wie macht man das bei Java am besten?
 
Einfach auf ne Datei prüfen, die nur im Entwicklungssystem vorhanden ist. Aber eigentlich gibts doch bestimmt irgendwo ne Config, die das regelt?!
 
Leg ne Properties Datei ins User Home und definiere dort alle umgebungsabhängigen Variablen.
 
Hm, mit dem File würde gehen. Klingt aber irgendwie komisch. Macht man das unter Java wirklich so?
Was meinst du mit Config? Ich will ich ja gerade schreiben. Oder meinst du was anderes?

AHHH...
System.getProperties().getProperty("os.name");
Ich glaube da findet sich was :D

Sorry für die dumme Frage :mussweg:

EDIT:
Leg ne Properties Datei ins User Home und definiere dort alle umgebungsabhängigen Variablen.
Die muss ich dann aber auch auf dem Zielsystem pflegen.
 
Nein. Normalerweise platziert man in den unterschiedlichen Umgebungen eine Properties Datei in der die umgebungsspezifischen Parameter stehen.

Diese liest man beim Start der Anwendung ein und verwendet die Properties dann entsprechend.

In deinem Fall dann dbHost, dbUser, dbPassword, proxyUrl, proxyPort, ...


Edit:
Du kannst die Datei auch im Arbeitsverzeichnis deiner Anwendung platzieren und über den Buildprozess entsprechend präparieren.

Kommt drauf an, was du fürs Build Management nutzt. Ant, Maven, ...

Bzgl. der "Pflege" würde ich aber darüber hinwegsehen. An den Parametern ändert sich doch in der Regel eher selten etwas.
 
Zuletzt bearbeitet:
Normalerweise platziert man in den unterschiedlichen Umgebungen eine Properties Datei in der die umgebungsspezifischen Parameter stehen.
Sorry, bin bei Java komplett neu. Lege ich als Entwickler die Datei auf den Server oder (würde wohl mehr Sinn machen) pflegt die ein Admin, sodass sie jeder der was deployen lässt nutzen kann?
 
Am einfachsten eine Variable anlegen und entsprechend mit If-Abfragen, ob es Entwicklunks- oder "Produktions"server ist
 
Korrekt. Die Datei wird auf dem Server platziert und dort vom Admin/SystemOwner/??? gepflegt. Sie sollte dann nicht im Anwendungsverzeichnis liegen, da sie sonst beim nächsten Deployment überschrieben werden würde.

Wichtig ist, dass deine Anwendung Leserechte auf diese Datei hat. Daher empfiehlt sich z.B. das UserHome des Users unter dem die Anwendung ausgeführt wird.

Die Properties Datei sollte spezifisch für deine Anwendung sein und nicht mit anderen Anwendungen geteilt werden.

Eine Alternative wäre auf System Properties zurückzugreifen. Diese müssten dann aber auch für den entsprechenden User zur Verfügung stehen, der das Programm ausführt.
Ich finde es immer komfortabler mit Properties Dateien zu arbeiten.
Ergänzung ()

Tron36 schrieb:
Am einfachsten eine Variable anlegen und entsprechend mit If-Abfragen, ob es Entwicklunks- oder "Produktions"server ist

Es geht darum, wo diese "Variable" angelegt wird! Sicher nicht im Programm Code.
Genauso wenig sollten die anderen Parameter im Programm Code gepflegt werden. Sowas gehört ausgelagert!
 
Zuletzt bearbeitet:
@SaxnPaule: was spricht gegen das Anwendungsverzeichnis? Normalerweise deployst du eine Java App ja als JAR File, da ist es relativ bequem (sowohl für den Entwickler als auch für den Admin), einfach eine Datei daneben abzulegen, in der die Settings vorhanden sind.
 
So, war gerade mal mit den Admins nen Kippchen rauchen;-) Wird im Prinzip ne Mischung aus euren beiden Vorschlägen. Ich lege in das App Verzeichnis nen Config Template welches von einem externen Script mit Werten gefüllt wird. Na und das kann ich denn einlesen und nutzen. Keine Ahnung ob das der Weißheit letzter Schluss ist, aber es sollte funktionieren und wenns so schon erprobt ist. Naja, ich muss nicht alles tot diskutieren.

THX für die Tipps!
 
deveth0 schrieb:
@SaxnPaule: was spricht gegen das Anwendungsverzeichnis? Normalerweise deployst du eine Java App ja als JAR File, da ist es relativ bequem (sowohl für den Entwickler als auch für den Admin), einfach eine Datei daneben abzulegen, in der die Settings vorhanden sind.

Das funktioniert, wenn die Anwendung eine JAR ist.
Das ist im Enterprise Segment so gut wie nie der Fall.

Ich kann mich an keine Applikation erinnern, die ich als JAR ausgeliefert habe.

Ich mache das kaskadiert. Es gibt ne Default Properties, welche von einer im Classpath überschrieben werden kann, welche wiederum von einer im User Home überschrieben werden kann.
 
Zuletzt bearbeitet:
Zurück
Oben