Announcement

Collapse
No announcement yet.

Der RPC-Server ist nicht verfügbar

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Der RPC-Server ist nicht verfügbar

    Ich habe in Delphi 6 einen COM-Server geschrieben. Die Sache funktioniert eigentlich ohne Probleme.
    Nur wenn das Client Programm im Hintergrund gelegt wird, scheint sich der Server im Laufe der Zeit abzuschalten (glauben wird zumindest)
    Dann erscheint die Fehlermeldung "Der RPC Server ist nicht verfügbar". Kann man da irgendetwas einstellen ?

  • #2
    Hallo,

    hält der Client die ganze Zeit über einen Interface-Zeiger auf den COM-Server offen

    Comment


    • #3
      Hallo,
      ich muß gestehen, daß ich das Grundgerüst mit den entsprechenden Delphi-Experten erzeugt habe und mich dann um solche Details nicht mehr gekümmert habe, sondern nur noch meine Properties usw. erzeugt habe.

      Wie kann ich das überprüfen ?

      Wenn ich den Debugger in Delphi anhalte, dann hat das den selben Effekt nach einigen Minuten. Das habe ich aber dem Debugger-Verhalten zugeordnet

      Comment


      • #4
        Hallo,

        nur der Client bestimmt die Lebensdauer eines COM-Objekts. Immer dann, wenn der letzte Client den letzten Interface-Zeiger auf das COM-Objekt freigibt, wird der COM-Server automatisch abgeräumt. Wie sieht die Implementierung im Client im Detail au?

        Im Fall eines DCOM-Servers pingt das Betriebssystem regelmässig den Client-Rechner an. Wenn dieser mehrmals auf diesen "Weckruf" nicht richtig antwortet, räumt Windows den DCOM-Server automatisch ab.

        >"Der RPC Server ist nicht verfügbar".

        Läuft irgend ein Viren-Scanner im Hintergrund mit? Wenn ja, was passiert, wenn dieser deaktiviert wird

        Comment


        • #5
          Hallo,
          momentan wird der Server immer nur von einem Programm genutzt. Server und Client befinden sich immer auf einen Rechnern. Grundsätzlich scheint das auch auf mehreren Rechnern im Betrieb zu funktionieren. Nur von einem Anwender kam der Hinweis, daß er das Programm in den "Hintergrund" gelegt hatte.

          Ein Virenscanner läuft im Hintergrund, Norton Antivirus, das ist jedoch auf allen anderen Rechnern auch installiert. Es ist ja auch nicht so, daß es pausenlose auftritt, sondern nur dieses eine Mal.

          Mir wird einfach unwohl, darüber hinweg zugehen, in der Regel kommt so etwas dann später immer wieder zurück

          Comment


          • #6
            Hallo, ich habe ähnliche Probleme, allerdings über die Rechnergrenze hinweg.
            Ich beobachte das Fehlverhalten nun schon längere Zeit und habe folgendes herausgefunden.<br>
            1. Der Interface-Zeiger wird in meinem Client über längere Zeit offengehalten.<br>
            2. Der Zugriff schlägt plötzlich fehl, nachdem vorausgehende Zugriffe bereits erfolgreich waren.<br>
            3. Beendet der Anwender das Programm und startet es erneut, bekommt er oder ein anderer Benutzer den Fehler wieder (Fehler wandert!).<br>
            4. Hält der Anwender hingegen das Programm offen und öffnet eine neue Instanz, so tritt der Fehler nicht wieder auf (Fehler wird anscheinend durch das offengehaltene Programm festgehalten).<br>
            <br>
            Ich kann leider noch keine Ursache für die Probleme angeben. Wir setzen das System an 3 Standorten ein (3 Server). Generell ist zu sagen, dass der Fehler unregelmäßig an allen Standorten auftritt, manchmal tagelang überhaupt nicht, an anderen Tagen dafür massiv. Das System an einem Standort ist jedoch besonders schwer betroffen (mehrmals täglich). Wir haben dort auch schon versucht, durch Wechseln des Servers eine Verbesserung zu erreichen - ohne Erfolg.<br>
            Vielleicht kann Herr Kosch mit diesen Informationen irgendetwas anfangen, mir fehlt leider das Wissen über die exakte interne Funktionsweise von COM/DCOM um die genaue Ursache herauszufinden

            Comment


            • #7
              Hallo,
              ich habe auch noch keine Lösung für das Problem, wobei es einfach sehr schwer ist, den Übeltäter einzugrenzen.

              Mein Server greift auf der anderen Seite über eine Schnittstellen-Tool von Turbopower auf eine serielle Schnittstelle. Der Client teilt ihm mit, was er machen soll. Also Daten hin- und herschaufeln oder eben nur warten und nichts tun.

              Wenn der Client minimiert wird oder den Fokus verliert, dann bricht die Verbindung ab. Genau genommen weiß ich nicht, ob die Verbindung wirklich abbricht, auf jeden Fall funktioniert der Datentransfer über den Server hin zur seriellen Schnittstelle nicht mehr.

              Bleibt das Clientfenster im Vordergrund, gibts keine Probleme, zumindest kommt es dann nicht nach einigen Minuten zum Abbruch.

              Das Buch habe ich, habe auch die ersten 80 Seiten versucht ordentlich durchzuarbeiten, aber ich habe immer das Gefühl, daß es schon einen Grund hat, daß das Buch so dick ist und einige Kapitel nur auf der CD zu finden sind.

              Ich werde mal von Zeit zur Zeit hier nachsehen und meine Erfahrungen hier reinschreiben, falls ich etwas produktives gefunden habe

              Comment


              • #8
                Hallo,

                &gt;Wenn der Client minimiert wird oder den Fokus verliert, dann bricht die Verbindung ...

                in diesem Fall würde ich die Seite 215 bis 217 und speziell die Seite 215 in meinem COM/DCOM/COM+ Buch genauer durchlesen. Danach geht es mit der Seite 585 (TComponentFactory) weiter.

                Ein COM-Server kann in vielen Ausführungsformen (Single-Instanz, Multi-Instanz, STA, MTA, TNA etc.) implementiert werden, so dass es immer vom Einzelfall abhängt.

                Wenn man sich um die ganzen Details so wenig wie nur möglich kümmern will, vereinfacht letztendlich COM+ (Win32) oder .NET Enterprise Service (COM+ unter .NET) unser Leben. Denn dort stellen wir nur ein In-Process-Server (COM-Objekt als DLL verpackt) zur Verfügung, der vom Betriebssystem-Host (DLLHOST.EXE) ausgeführt wird. Da dort überhaupt keine Benutzeroberfläche vorkommt, sind die größten Fallgruben unfallsicher abgedeckt ;-

                Comment


                • #9
                  Hallo,
                  ich bin mir inzwischen nicht sicher, ob ich nicht selbst der Übertäter bin. Es gab nämlich auch Fälle, in denen der Client nicht minimiert war.

                  Die Seiten werde ich aber gleich einmal durchforsten. Das Problem bei der Geschichte ist immer, daß man so lange warten muß, bis man das Ergebnis sieht

                  Dank

                  Comment


                  • #10
                    Hallo zusammen,

                    bei uns ist das Problem viel massiver.
                    Wir haben eine Application mit Delphi 6.0 geschrieben. Betreiben zwei Applicationserver mit Windows 2000 Server und einen SQL Server mit einem Windows 2003 Server . Es arbeiten bis zum 20 User aktiv und sehr intensiv ( Call Center ) am System. Das Probelm was hier auftaucht, sieht wie folgt aus:
                    nach einer umbestimmten Zeitspanne (zwischen 3 und 6 Stunden ) bekommen die Mitarbeiter die aus der Pause kommen und sich wieder anmelden wollen die Meldung "RPC-Server nicht verfügbar". Ab diesem Zeitpunkt kann sich kein Mitarbeiter im Netz in die Application anmelden. Fahren wir die Server runter, läuft wieder weiter.

                    Kann uns jemand einen Tip gegeben.

                    Gruß
                    Claudi

                    Comment


                    • #11
                      Hallo,

                      &gt;..zwei Applicationserver mit Windows 2000 Server.

                      Wurde mit Delphi 6 eine COM+ Anwendung entwickelt oder basiert das COM-Objekt auf der Server-Seite auf MIDAS

                      Comment


                      • #12
                        Hallo Herr Kosch,

                        vielen Dank für Ihre prompte Meldung.
                        Die Application wird als COM-Objekt installiert.

                        Gruß
                        Claudia Bartosinsk

                        Comment

                        Working...
                        X