Das Notes Forum

Domino 9 und frühere Versionen => ND7: Administration & Userprobleme => Thema gestartet von: Jens_1 am 30.06.10 - 13:41:08

Titel: Internethostnamen via Formel auslesen?
Beitrag von: Jens_1 am 30.06.10 - 13:41:08
Hallo!

Kann mir jemand auf die Schnelle sagen, wie ich via Formelsprache den Internethostnamen des Servers herausfinde auf dem eine datenbank gerade läuft?

Ich will eine simple Webseite in eine Datenbank werfen und die HTML-Adressbasis festlegen....
Da die Datenbank auf mehreren Servern läuft kann ich den Namen nicht fest coden.

Gruß
 Jens
Titel: Re: Internethostnamen via Formel auslesen?
Beitrag von: NoMaam am 01.07.10 - 15:04:03
Vielleicht hilft dir ja DNS Round Robin weiter, damit umgehst du das Problem.
Titel: Re: Internethostnamen via Formel auslesen?
Beitrag von: Jens_1 am 02.07.10 - 09:48:18
Vielleicht hilft dir ja DNS Round Robin weiter, damit umgehst du das Problem.

Nein - das hilft mir nicht weil ich weder Zugriff auf's DNS habe noch weiss wo die Datenbank im weitverzweigten Unternehmen laufen wird...

Gruß
 Jens
Titel: Re: Internethostnamen via Formel auslesen?
Beitrag von: Keydins am 02.07.10 - 11:26:01
Läuft die Datenbank als Replik auf mehreren Servern oder jeweils eigenständig?

Bei eigenständigen Datenbanken könntest du den jeweiligen Hostname des Servers in einem Konfigurationsdokument ablegen. Eine Möglichkeit zur dynamischen Abfrage des Hostnamen eines NotesServers per Formelsprache wäre mir nicht bekannt.


Eine deutlich sauberere Lösung ist die Hinterlegung der Notesserver mit ihrem Servernamen als Alias im DNS, so wird das z.B. bei uns gemacht.

Ein ping auf 'ABC123Notes' liefert mir 'xyz.dummy.url.de' zurück und ich kann über folgende Formel z.B. eine bestimmte Maske aus der aktuellen Datenbank öffnen:

@URLOpen("//" + @Name([CN]; @ServerName) + "/" + @WebDbName + "/Maske?OpenForm");

ohne dass ich den tatsächlichen Hostnamen des Servers kennen muss.
Titel: Re: Internethostnamen via Formel auslesen?
Beitrag von: m3 am 02.07.10 - 12:03:21
Da die Datenbank auf mehreren Servern läuft kann ich den Namen nicht fest coden.
Läuft die DB auf mehreren Servern unter einem Namen (also als Cluster etwa unter http://intranet.example.com/x/x.nsf erreichbar), oder muss/soll sie wirklich unter mehreren Hostnamen (http://srv1.example.com/x/x.nsf http://srv2.example.com/x/x.nsf http://srv1.example.com/x/x.nsf http://srv1.example.com/x/x.nsf ) erreichbar sein?

Im zweiten Fall wirst Du nicht umhin kommen, mit @Lookups, ... im DD danach zu suchen.
Titel: Re: Internethostnamen via Formel auslesen?
Beitrag von: pram am 02.07.10 - 17:59:39
Was willst du genau erreichen, willst du beim Klick auf einen Link den Server wechseln?

Falls nicht, reicht es, die Links relativ zum Server anzugeben, also z.B.
  /static_content/impressum.html (http://atnotes.de/static_content/impressum.html)
um das Impressum dieses Servers anzuzeigen.

Alternativ wüsst ich noch: @GetHTTPHeader("Host")
Wobei diese Info vom Browser zum Server übertragen wird und exakt dem entspricht was in der Adresszeile steht
(d.h. wenn er z.B. die IP eintippt, steht diese in "Host")

Gruß
Roland
Titel: Re: Internethostnamen via Formel auslesen?
Beitrag von: Jens_1 am 05.07.10 - 07:29:35
Läuft die Datenbank als Replik auf mehreren Servern oder jeweils eigenständig?

Bei eigenständigen Datenbanken könntest du den jeweiligen Hostname des Servers in einem Konfigurationsdokument ablegen. Eine Möglichkeit zur dynamischen Abfrage des Hostnamen eines NotesServers per Formelsprache wäre mir nicht bekannt.


Eine deutlich sauberere Lösung ist die Hinterlegung der Notesserver mit ihrem Servernamen als Alias im DNS, so wird das z.B. bei uns gemacht.

Ein ping auf 'ABC123Notes' liefert mir 'xyz.dummy.url.de' zurück und ich kann über folgende Formel z.B. eine bestimmte Maske aus der aktuellen Datenbank öffnen:

@URLOpen("//" + @Name([CN]; @ServerName) + "/" + @WebDbName + "/Maske?OpenForm");

ohne dass ich den tatsächlichen Hostnamen des Servers kennen muss.

Die Idee des Konfigurationsdokumentes hatte ich auch schon. Allerdings soll der Aufruf explizit ohne jede Form der Konfiguration sein.
Die Hinterlegung der Notesserver im DNS sollte Selbstverständlichkeit sein - in extrem großen Unternehmen mahlen die Mühlen leider anders.
Da gibt's Befindlichkeiten usw. usw. usw....

Da die Datenbank auf mehreren Servern läuft kann ich den Namen nicht fest coden.
Läuft die DB auf mehreren Servern unter einem Namen (also als Cluster etwa unter http://intranet.example.com/x/x.nsf erreichbar), oder muss/soll sie wirklich unter mehreren Hostnamen (http://srv1.example.com/x/x.nsf http://srv2.example.com/x/x.nsf http://srv1.example.com/x/x.nsf http://srv1.example.com/x/x.nsf ) erreichbar sein?

Im zweiten Fall wirst Du nicht umhin kommen, mit @Lookups, ... im DD danach zu suchen.

Der zweite Fall ist der Fall.
Und mit den Lookups ist das, wenn ich mich nicht vertan habe, nicht so einfach weil es keine Ansicht gibt die in der ersten sortierten Spalte die Servernamen stehen hat die ich via "@Servername" hätte auslesen können.
Und eine extra (verborgene) Ansicht dafür ist undenkbar.

Was willst du genau erreichen, willst du beim Klick auf einen Link den Server wechseln?

Falls nicht, reicht es, die Links relativ zum Server anzugeben, also z.B.
  /static_content/impressum.html (http://atnotes.de/static_content/impressum.html)
um das Impressum dieses Servers anzuzeigen.

[...]


Das Problem ist der erste Aufruf der Seite. Wenn ich einfach "Servername/datenbank.nsf" aufrufe, dann wird das css der Seite nicht mit eingebunden.
Dass passiert erst wen ich direkt auf die Seite gehe.

Ich habe mir jetzt so beholfen, das ich im Header einer eigens dafür erstellen Einstiegsseite folgenden Eintrag gemacht habe:

Code
<meta http-equiv="refresh" content="0; URL=/<Berechneter Wert = @WebDbName>/Seitenname">

Damit haut das ganze dann hin.


[...]

Alternativ wüsst ich noch: @GetHTTPHeader("Host")
Wobei diese Info vom Browser zum Server übertragen wird und exakt dem entspricht was in der Adresszeile steht
(d.h. wenn er z.B. die IP eintippt, steht diese in "Host")

Gruß
Roland


Jackpot!
Das ist die beste Lösung!
Und wird im nächsten Release auch so gemacht.

Danke @All für die Hilfe!

Gruß
 Jens