Connection auf alle Server öffnen und direkt wieder schließen

  • Hallo zusammen,


    wir haben häufiger Probleme, dass unsere Clients "vergessen", auf welchen Adressen die Server zu finden sind und dann Fehlermeldungen ausgeben, z.B. "Server XY is not a known TCP/IP Host", jetzt habe ich in die Postopen der Mail-DB das folgende Skript eingefügt, um jeden Server einmal über seine Internetadresse anzusprechen, so dass der Client die Adresse im Cache ablegen kann:



    Das klappt auch ganz gut, nur haben wir jetzt auf allen Servern Connections offen, von jedem Client zu jedem Server...
    Gibt es einen Weg, diese Verbindungen nur kurz zu öffnen und anschließend wieder zu schließen????


    Norbert

  • Hallo Taurec,


    ich habe nirgends eine Delete Methode gefunden...
    In Session gibt es kein Delete, und einen Handle auf die Datenbank, die ich geöffnet habe, kriege ich auch nicht...


    Norbert

  • Haben Deine server feste IP_Adressen? Wahrscheinlich. Dann sollte eigentlich auch ein verbindungsdok mit der IP Adresse beim Client genuegen. So hatte ich mir mal geholfen, aehnliches Problem gehabt.

  • Ich kann soviele Verbindungsdokumente anlegen, wie ich will, die Clients verwenden die einfach nicht...
    Ich weiß nicht, wie die in diesen Zustand kommen, aber normal hat dann nur das manuelle öffnen einer Datenbank auf dem Server über Strg-O geholfen (mit IP oder DNS Namen).
    Seid ich das obige Programm automatisch beim Client bzw. Mail-DB-Start ausführe, ist das Problem nicht mehr aufgetreten. Jetzt haben wir aber das Problem mit den vielen Konnektions....



    Gruß


    Norbert

  • Wie legst du denn die Verbindungsdokumente an ? Stimmen die Schlüsselwörter ? Normalerweise deutet die Fehlermeldung, daß kein Pfad gefunden werden kann, auf fehlende DNS-Auflösung und fehlendes Verbindungsdokument hin, die Meldung "Unknown TCP/IP-Host" deutet hingegen oft auf Falscheinträge der CNAMES oder der Einträge in Verbindungsdokumenten hin.


    Natürlich haben wir auch das Problem, daß in einem großen Firmennetzwerk nicht an allen Standorten meine Servernamen als CNAMES in der dortigen DNS eingetragen werden. Wenn ich den Anwendern eine Mail sende, die ihnen die Verbindungsdokumente zu meinen Servern "bastelt", funktionieren die versendeten DocLinks sofort.


    Die


    Damit die Anwender nicht in 10 Jahren noch einmal unbewußt auf die Schaltfläche drücken, baue ich eine zweite Schaltfläche ein, die das Feld AUSGEFUEHRT aus dem Maildokument wieder löscht.


    Sub Click(Source As Button)
    Dim s As New NotesSession
    Dim ws As New NotesUIWorkspace
    Dim memoUIdoc As NotesUIDocument
    Dim memodoc As NotesDocument
    Set memoUIdoc=ws.CurrentDocument
    Set memodoc=memoUIdoc.Document
    If memodoc.HasItem("Ausgefuehrt") Then
    Msgbox "Eine erneute Ausführung ist erst nach Drücken der Schaltfläche REACTIVATE... möglich. / A second run of this button is possible after pressing the button REACTIVATE ..."
    Exit Sub
    End If
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim docNeu As NotesDocument
    Dim sName As NotesName
    Dim Server As String
    Dim LookupName As String
    Dim ServerIP As String
    Dim xtxt As String
    Dim sArray(2,1) As String
    sArray(0,0)="Servername1/Certifier/DE"
    sArray(0,1)="xxx.yyy.zzz.abc"
    sArray(1,0)="Servername2/Certifier/DE"
    sArray(1,1)="xxx.yyy.zzz.abd"
    sArray(2,0)="Servername3/Certifier/DE"
    sArray(2,1)="xxx.yyy.zzz.abe"

    Set db = s.GetDatabase( "" , "names.nsf")
    Set view = db.GetView("Connections")
    For i=0 To Ubound(sArray,1)
    Set sName=New Notesname(sArray(i,0))
    If sName.IsHierarchical Then
    Server=sName.Canonical
    LookupName=sName.Abbreviated
    Else
    Server=sName.Common
    LookupName=sName.Common
    End If
    xtxt="added"
    Set doc = view.GetDocumentbykey(LookupName,False)
    If doc Is Nothing Then
    Set docNeu = New NotesDocument( db )
    Else
    If doc.ConnectionType(0)="0" And Left(doc.LanPortName(0),3)="TCP" Then
    Set docNeu=doc
    xtxt="modified"
    Else
    Set docNeu = New NotesDocument( db )
    End If
    End If
    docNeu.Form = "local"
    docNeu.ConnectionType = "0"
    docNeu.LanPortName = "TCPIP"
    docNeu.ConnectionLocation = "*"
    docNeu.ConnectionRecordFirst = "1"
    docNeu.DialAreaCode = "0"
    docNeu.DocumentAccess = "[NetModifier]"
    docNeu.Type = "Connection"
    docNeu.Cost = "5"
    docNeu.DestinationDomain = "*"
    docNeu.Source = "*"
    docNeu.Destination = Server
    docNeu.OptionalNetworkAddress = sArray(i,1)
    Call docNeu.ComputeWithForm( False, False )
    Call docNeu.save(True,True)
    Print "Serverconnectiondocument for " & Server & " with " & sArray(i,1) & " " & xtxt
    Next
    Messagebox(Cstr(Ubound(sArray,1)+1) & " Connection documents added to your addressbook!")
    If memodoc.HasItem("Ausgefuehrt") Then
    memodoc.Ausgefuehrt=memodoc.Ausgefuehrt(0)+1
    Else
    memodoc.Ausgefuehrt=1
    End If
    Call memoUIdoc.RefreshHideFormulas
    Call memodoc.Save(False,False,False)
    End Sub


    Schaltfläche REACTIVATE
    FIELD Ausgefuehrt:=@DeleteField;
    @Command([RefreshHideFormulas]);
    @True

  • Hallo Zusammen, erstmal vielen Dank für die Hinweise..


    taurec:
    wie sähe der "Delete-Code" denn in meinem Beispiel aus???


    ich mache ja eigentlich nur ein:
    call session.Opendatabase(...)


    Oder mache ich ein Delete auf die session?? Wenn ja, wie??


    LN4ever: Das Phänomen ist, dass die Verbindungen eine ganze Weile funktionieren, aber wenn eine bestimmte Verbindung längere Zeit nicht verwendet wurde (ca. 5-10 Tage) selbst nach Reboots, dann findet der Client den Server einfach nicht mehr und verwendet auch nicht das Verbindungsdokument, dass er vorher ohne Murren verwendet hatte. Er fragt noch nicht mal die bekannten Server nach der Adresse, gar nix....
    Mit meinem "StandardverbindungsaufbauenbeijedemMaildatenbanköffnene" haben wir diese Probleme komplett aus der Welt geschafft....


    Leider gab es einen Trade-In...


    Norbert

  • Ausschnitt aus der Notes Hilfe:


  • Stehen da vielleicht noch irgendwelche fehlerhaften Adressen in einer lokalen LMHOSTS. Das riecht doch förmlich nach einem DNS-Problem.

  • Warum machst Du


    Call session.GetDatabase("mail-f1.intern.xxx.com","names.nsf")
    und nicht
    set tempDB = session.GetDatabase("mail-f1.intern.xxx.com","names.nsf")
    set tempDB = Nothing
    set tempDB =session.GetDatabase()
    set tempDB = Nothing
    .
    .
    .



    gruss
    umeli

  • Zitat


    LN4ever schrieb:
    Stehen da vielleicht noch irgendwelche fehlerhaften Adressen in einer lokalen LMHOSTS. Das riecht doch förmlich nach einem DNS-Problem.


    Nein, dass Problem tauchte über zwei Standorte zufällig über alle Clients verteilt...


    Ich glaube die Clients machen da irgendeinent Mist, denn DNS Probleme entstehen nicht willkürlich mal eben so für einen Client...


    Norbert


  • Na, das werde ich mal (morgen früh) einbauen, mal sehen, ob das die Connections reduziert...


    Norbert


  • Hi Umeli,


    das habe ich heute ausprobiert, bringt aber leider nix....


    Es wird eine Connection dauerhaft auf dem Server offen gehalten....


    Gibt es eigentlich nicht einen Time-Out für inactive Notesverbindungen????


    Norbert

  • Zitat


    taurec schrieb:
    Ausschnitt aus der Notes Hilfe:


    Hi Taurec,


    ich wäre Dir dankbar, wenn Du mir anhand meines Codeschnipsels zeigen könntest, wo ich den "delete" einbauen muß.
    Ich habe es irgendwie nicht gefunden...


    Danke


    Norbert

  • Das Anhaengen von delete Session ist einfach. Leider bewirkt es ueberhaupt nichts. Kann man ganz simpel ausprobieren...jedenfalls bei mir wir die Verbindung zum Server nicht abgebaut.