Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: sja am 25.07.06 - 13:30:24

Titel: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: sja am 25.07.06 - 13:30:24
Hallo liebe Forum,

Wenn jemand mir dabei helfen würde:
wie berechnet man Servername, auf welchem der aktuellen User gerade angemeldet ist ?

Meine Recherche waren erfolglos.

Vielen Dank im Voraus und schoene Gruesse

Sofia
Titel: Re: Servername, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: sja am 25.07.06 - 14:27:04
Hallo,

evtl. habe ich meine Frage nicht ganz korrekt gestellt.

Die Situation ist folgende:

User arbeitet mit einer lokalen Replik einer Anwendung. In dieser Anwendung ist vorgesehen den Zugriff auf eine andere Anwendung, die auf einem Server liegt (es gibt die Repliken auf mehreren Servern), aber es muss zugegriffen werden auf die jenige Replik, die auf dem Server liegt, auf welchem der User gerade angemeldet ist.


Danke schön im Voraus
Sofia
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: Driri am 25.07.06 - 14:38:58
Hallo,

dann hol dir einfach über die NotesDatabase und deren Property Server den Servernamen.

z.B.

Set db = session.CurrentDatabase
server = db.Server
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: koehlerbv am 25.07.06 - 14:49:05
Obicht, Ingo - Sofia arbeitet mit einer lokalen Replik und will einen Servernamen!

Sofia: "Angemeldet" bei einem Domino-Server sagt im Notes-Umfeld sehr wenig aus - der User kann sich ja bereits bei drei Servern authentifiziert haben. Du müsstest also bestimmen, was "der" Server ist - mit der "Anmeldung" hätte das dann aber nichts zu tun (die Authentifiziering) kann ggf. erst dann erfolgen, wenn auf eine DB auf diesem gewünschten Server zugegriffen wird.

Du könntest auf die lt. Arbeitsumgebung festgelegte Mail-DB zugreifen und darüber einen dedizierten Server zugreifen - aber ob das Deine Intentionen trifft? Vielleicht beschreibst Du die Anforderungen noch etwas spezifischer.

Bernhard
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: Driri am 25.07.06 - 15:17:06
Hmm, dann hab ich das mistverstanden. Ich hatte das so verstanden, daß aus DB A heraus auf DB B zugegriffen werden soll und die dann DB B auf dem selben Server geöffnet werden soll, wie DB A.

Ich seh auch gerade, Sofia hat ja geschrieben "User arbeiten mit einer lokalen Replik". Hab ich irgendwie überlesen, sorry.
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: sja am 25.07.06 - 15:19:57
Hallo Ingo.
hallo Bernhard.

erst herzlichen Dank für Eure Hilfe

Du hast absolut Recht, Bernhard, das Problem ist, dass es mit lokaler Replik gearbeitet wird und deswegen kann ich nicht db.Server verwenden.
Ich kann auch nicht in persönlichem Dokument (Domino-Directory) gespeicherte Mail-Server (sagen wir Haupt-Server) benutzen, in meinem Fall wird es das Server (sagen wir Arbeits-Server), das in der Arbeitsumgebung von Notes-Client festgelegt ist und normale Weise die Authentifizierung erfolgt auf diesem Server.
Ich weiss nur nicht wie kann man das aus einer Anwendung (mit LotusScript ?) festzustellen ???

Noch mal vielen Dank und liebe Gruesse

Sofia
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: koehlerbv am 25.07.06 - 15:25:52
Wenn Du den in der AU festgelegten Mailserver ermitteln willst: NotesDatabase.OpenMail und dann NotesDatabase.Server.

Bernhard
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: Driri am 25.07.06 - 15:27:19
Normalerweise entspricht der Home-Server in der Arbeitsumgebung aber dem Mailserver aus dem Personendokument im Directory. Oder habt ihr da wirklich was anderes eingestellt ?

Die einfachste Möglichkeit, um an den Mailserver zu kommen, wäre IMO der Weg über die INI. Dort ist der Mailserver in der Variable "MailServer" hinterlegt. Mit session.GetEnvironmentString kannst Du die einfach auslesen.
Dort wird AFAIK bei der Konfiguration des Clients der Mailserver des Users eingetragen. Der Eintrag stammt dann allerdings aus dem Directory.
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: Thomas Schulte am 25.07.06 - 15:33:39
Wobei die Strategie von Bernhard nicht notwendigerweise sinnvoll sein muss.

Das Problem dabei ist immer, wie bilde ich sich zwischen verschiedenen Servern bewegende Benutzer so ab, das der Zugriff auf mit meiner Datenbank verbundene Anwendungen (andere Datenbanken) mit möglichst wenig Datentransportaufwand passiert.
Also das klassische der Benutzer springt zwischen n Standorten mit m Servern und soll sich jeweils immer am Netzwerktechnisch nächstgelegenen Server seine Daten holen, vorzugsweise ohne mit unterschiedlichen Arbeitsumgebungen hantieren zu müssen Problem.

Das wäre ein Fall für einen BP Artikel, da die verschiedenen möglichen Strategien mit ihren Vor und Nachteilen aufzuzeigen. Wobei meiner Meinung nach in diesem Fall egal wie du es anstellst immer nur suboptimale Lösungen möglich sind.
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: koehlerbv am 25.07.06 - 16:06:07
Nein, dfas muss wirklich nicht sinnvoll sein, Thomas. Ich hatte das weiter oben ja schon etwas ausführlicher angedeutet  ;)

Bernhard
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: sja am 25.07.06 - 16:42:38
Hallo,  

In unserem Fall ist  der Zugriff per Internet auf eine Email-Db nur auf dem Haupt-Server möglich, deswegen ist das Haupt-Server in dem Personendokument im Directory eingetragen, aber aus dem Notes-Client muss man schon mit dem Arbeits-Server arbeiten, deswegen in der AU wird Arbeits-Server festgelegt.

Vielen Dank für Eure hilfreiche Vorschläge. Über NotesDatabase.OpenMail  wusste ich frühe nicht, aber was betrifft notes.ini das ist mir schon peinlich, da ich schon selbst dazu kommen sollte.

Habe gerade mit dem Vorschlag von Bernhard getestet

Dim db As New NotesDatabase( "", "" )
Call db.OpenMail
Messagebox( db.Title & " on server " & db.Server )

und es wird mit db.Server das Server angezeigt, der in der AU festegelegt ist, obwohl in meinem Arbeitsbereich  sind die Leserzeichen von mehreren Repliken auf verschiedenen Servern. Genau das brauche ich.

Noch mal tausend Dank!

Liebe Gruesse
Sofia



 
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: sja am 25.07.06 - 17:08:27
Jetzt habe ich dazu noch eine Frage.

Es sollte aus lokaler Replik der Anwendung A auf der Server-Replik der Anwendung B nur in dem Fall zugegriffen werden, wenn lokale Replik von Anwendung B existiert nicht.
Wie kann ich herausfinden ob lokale Replik von Anwendung B existiert oder nicht existiert?

Danke schön

Sofia
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: koehlerbv am 25.07.06 - 17:16:53
Öffne die DB über die ReplicaID (NotesDatabase.OpenByReplicaID). Wenn das in die Hose geht ...
Achtung: OpenByReplicaID kann ggf. lokal zeitintensiv sein, wenn dies die erste derartige Aktion nach dem Clientstart ist. Anders geht es aber nicht.

Bernhard
Titel: Re: Servername berechnen, auf welchem der aktuellen User gerade angemeldet ist
Beitrag von: sja am 27.07.06 - 13:40:42
Hallo Bernhard,

herzlichen Dank für Deine immer super Hilfe.

habe mit folgendem Code getestet

If ( Not ( dbCopy.Open(  "", "DBFileName" ) ) )  Then
   Call db.OpenMail
   tmpSRV = db.Server
Else
   tmpSRV = ""
End If   
. . .

Set collection = ws.PickListCollection( 3, True, tmpSRV, "DBFileName", viewName$, title$, prompt$ )
. . .

Da der Pfad und der DBFeilName müssen auf den Servern und ggf. lokal gleich sein, könnte ich ohne ReplicaID zu Recht zu kommen. Also, in der Test-Version funktionierte es.
Sorry, dass ich nicht sofort beantwortet habe, war mit einer anderen dringenden Aufgabe von dieser abgelehnt und könnte nur heute das alles zu Testen.

Noch mal danke ich allen für reiche Hilfe
Schoene Gruesse

Sofia