![]() |
Klassen in Webservice
Hallo,
ich programmiere an einem Webservice (SOAP Server Anwendung, CGI) in Delphi 7 (Enterprise) und habe leider ein richtig großes Problem: In dem Webservice habe ich eine Klasse, die über ein Interface von außen abrufbar ist. Jetzt kann ich auch problemlos die einzelnen Funktionen der Klasse über php oder über delphi (Webservice Client) aufrufen. Nur funktioniert das OOP Konzept nicht so ganz ;) -- ich bin absoluter newbie in sachen webservice, daher kann es auch gut sein, dass ich da vielleicht was falsch verstanden habe... ;) Ich skizzier mal das Grundkonzept was ich habe (ist jetzt mehr Pseudo Code, der ganze Code würde etwas unübersichtlich werden)
Delphi-Quellcode:
Die Klasse TClassA ist über ein Interface nach außen hin aufrufbar - funktioniert auch an sich. Jetzt ist mein Problem, dass wenn ich die Funktion "Init" aufrufe, wird ja eine weitere Klasse erstellt und in der Klasse TClassA in der Variable FClassB gespeichert. Wenn ich jetzt erst "Init" und dann "Work" aufrufe, dann ist die Variable FClassB in der Funktion "Work" nicht mehr zugewiese, also sprich = nil.
TClassA = class
FClassB : TClassB; function Init; function Work; end; ... function TClassA.Init; begin FClassB := TClassB.Create; end; function TClassA.Work; begin FClassB.xyz; end; Ich hab schon alles mögliche getestet um sicher zu gehen, dass FClassB vorher schon mal ungleich nil war und bin immer zu dem Ergebnis gekommen, dass der Webservice intern richtig arbeitet. Ich hab das Gefühl, als würde bei jedem Funktionsaufruf von außen die ganze Klasse des Webservices neu erstellt werden, bzw. die vorherigen Daten nicht mehr vorhanden sein. Habt ihr eine Ahnung woran das liegen könnte? Oder ist das generell gar nicht möglich "wirklich" mit Klassen in Webservices zu arbeiten? Vielen Dank im Vorraus, DCoder |
Re: Klassen in Webservice
Mal ne generelle Frage noch dazu: Wenn ich auf einen Webservice zugreife, wird dann das eigentliche Programm nur kurz ausgeführt und danach direkt wieder geschlossen? Denn das würde erklären warum die Variable immer = nil ist bei dem zweiten aufruf.
Die Frage ist also, wie kann ich einen Webservice permanent im Hintergrundlaufen lassen, bzw. so lange bis der Nutzer ihn wieder schließt? Ich hab mir zum Testen mal meinen TaskManager angeschaut während ich auf den Webservice zugreife (der webservice liegt auf meinem lokalen Server - Apache - im cgi-bin Verzeichnis) und musste feststellen, dass der Prozess kurz sichtbar wird und danach sofort wieder weg ist, also immer nur erstellt wird, wenn ich eien Funktion des Webservices nutze! Kann man das irgendwie anders lösen, oder bin ich da voll auf dem Holzweg? Vielen Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz