# Rechnername auf dem eine J2EE läuft



## jean20 (24. Okt 2007)

Hallo zusammen,

ich habe eine kleine J2EE Anwendung programiert...Jetzt wird diese in Unterschiedliche Test-Umgebungen deployt. Auf unterschiedliche Rechner...Ich möchteabhängig von der Umgebungen etwas ein und ausblenden...wie ich den Rechnername raus auf dem die Anwendung läuft?

Danke für die Hilfe


----------



## maki (24. Okt 2007)

Eigentlich solltest du in Konfigurationsdateien die Parameter setzen, dann brauchst du auch nix mehr aus dem OS abfragen, auch Rechnernamen können sich ändern.

Was für eine J2EE Anwendung ist es denn?


----------



## jean20 (24. Okt 2007)

Welche Parameter meinst du?
Was bedeutet OS?

Es ist eine Websphere Anwendung die auf einem Websphere Application Server läuft. Der Server ist auf auf drei unterschiedlichen Rechnern, weil wir drei testumgebungen haben. Die testumgenungen werden über verschiedene URL angesprochen. Jetzt wollte ich den rechnernahmen wissen, um nicht von den URL abhängig zu sein.


----------



## maki (24. Okt 2007)

Die Konfiguration sollte sich je nach Umgebung unterscheiden, wenn du fest in deine Anwednung programmierst das der Prod Rechner"so und so" heisst, kann man das nicht ändern ohne das dein Programm neuerstellt werden muss.

Das ist nicht der beste Weg 

Je nach Anwendung (Servlet, EJB, etc.) kann man in unterschiedlichen Konfigurationssdateien parameter einstellen.
Also, was für eine Art "J2EE Anwendung" ist es?

Nachtrag: OS = Operating System


----------



## jean20 (24. Okt 2007)

genau, das ist der bester weg...

Die Anwendung besteht aus JSP/Servlets (Struts-framework)  im Web-teil und einigen EJB Komponenten in der Middleware


----------



## maki (24. Okt 2007)

In deiner web.xml kannst du Sevlet Init Parameter definieren oder gleich Context Parameter (Context Params), letzteres wäre das bessere für diesen Fall imho.

HIer ist ein nettes Beispiel dasbeides zeigt, sowohl Servlet Iinit Paramtere als auch Context Parameter:
http://www.java2s.com/Code/JavaDownload/ContextParaServlet.zip

Property files gehen auch, sind aber nicht so komfortabel 

Das wäre der Weg falls nur die Webschicht abhängig von der Maschine sein sollte.

Müssen deine EJBs auch wissen wo sie laufen?


----------



## jean20 (24. Okt 2007)

ich glaube das ist nicht das was ich brauche.
Ich deinem Besipiel muss man ja die URL angeben. Sie URL muss im web.xml stehen...

Wie kriege ich java-technisch den Rechnernamen raus? Wo gerade die Anwendung deployt ist.
So dass er mir local  z.B. //localhost/ ausgibt und wenn es wo anders deplot ist bekomme ich den REchnernamen ".../XYZ/"


----------



## maki (24. Okt 2007)

Bin mir nicht sicher ob ich vestehe was du meinst.

Könntest du das nochmal genauer sagen?


----------



## ms (24. Okt 2007)

Ich verstehe es auch nicht.
Was möchtest du denn genau mit dem Rechnernamen machen, wenn du ihn zur Verfügung hättest?

ms


----------



## jean20 (24. Okt 2007)

wenn ich den Rechnernamen weiß, dann will ich eine bestimmte FUnktion auf der JSP-Seite ausblenden.
Das heißt bestimmt User haben auf unterschiedlichen Umgebungen unterschiedliche Rechte. Wurde die Anwendung in die Produktion deployd, dann sieht user X die Funktion Y nicht (ausgeblendet). Wurde die Anwendung in die eine Testumgebung deployt, dann sieht der user X wieder die Funktion Y. Ich habe intern noch eine Rechteverwaltung...
Ich benötige aber unbedingt den Rechnernamen, um abhängig von dem Rechnerrnamen Funktion Y raus oder einzublenden.


----------



## ms (24. Okt 2007)

Dein Lösungsansatz funktioniert zwar, aber wie maki schon gesagt hat, sehr unpraktikabel.
Ich rate dir zu einem property-File welches außerhalb von deinem war-File bzw. ear-File liegt. Da kannst du dann für die jeweilige Umgebung properties setzen. Zb. in der Produktionsumgebung env=prod, in der Testumgebung1 env=test1, usw... 

Ich würde ev. noch einen Schritt weitergehen und konkret die ein/auszublendenden Funktionen über die properties steuern. 
Also 
showFunktion1=true
showFunktion2=false
...

ms


----------

