XML-RPC

Status
Nicht offen für weitere Antworten.
M

max5432

Gast
Hallo

Ich möchte mit Apache XML-RPC einen multiclientfähigen Server erstellen. Kann man dies mit XML-RPC machen, oder wird für jeden Client eine neue Server-Instanz (Diensterbringer) erzeugt?

Danke.
 
M

max5432

Gast
Ich möchte mehrere Clients bedienen können. Ich war der Meinung, dass der Diensterbringer nur ein einziges Mal erzeugt wird. Jedoch stelle ich fest, dass der Konstruktor der Klasse, die den Dienst erbringt, bei jeder Anfrage neu abearbeitet wird. Heisst, bei jeder Anfrage wird diese Klasse neu instanziert.

Dies ist mir deshalb aufgefallen, weill ich eine Instanzvariable (eine ArrayList) in der Klasse hatte, in der ich bestimmte Daten verwaltet habe. Als ich auf diese Liste schon bei der zweiten Anfrage zugegriffen habe, habe ich zu meiner Überaschung festgestellt, dass die Liste leer ist, obwoho ich beim ersten Zugriff ein Objekt in die Liste eingefügt habe: sie wurde neu erzeugt.

Also: wird der Diensterbringer wirklich bei jeder Anfrage neu erzeugt wird?

Hier der Auszug aus meinem Code:


Code:
// webServer erzeugen
WebServer webServer = new WebServer(portNummer);

// Den XmlRpcServer (Diensterbringer) vom webServer holen
XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();

// Config-Instanz holen
XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();

// Erweiterungen zulassen
serverConfig.setEnabledForExtensions(true);

// Das PropertyHandlerMapping-Objekt erzeugen
PropertyHandlerMapping pHandlerMapping = new PropertyHandlerMapping();

// Den Handler dem pHandlerMapping hinzufügen(Name: diensterbringer)
pHandlerMapping.addHandler("diensterbringer", Diensterbringer.class); /* Erzeugen des Diensterbringers */

xmlRpcServer.setHandlerMapping(pHandlerMapping);

webServer.start();

Nun, wieso habe ich bei jeder Anfrage eine neue Instanz der Dinsterbringer-Klasse?
 

foobar

Top Contributor
Die Webservices sind Stateless daher bekommste immer ne leere Liste. Du mußt den State auf dem Client tracken.
 
M

max5432

Gast
Du mußt den State auf dem Client tracken.

Soll heissen, ich muss den Zustand irgendwie anders abbilden, wenn ich es richtig verstanden habe. Wie könnte man dies einfach (oder auch weniger einfach) machen? Ich möchte wenn möglich bei XML-RPC bleiben und das ganze Gebilde nicht unbedingt aufblähen.

Danke.
 

Murray

Top Contributor
Implementiere doch ein eigenes HandlerMapping, das immer das gleiche Handler-Objekt zurückliefert, wenn Du vermeidne willst, dass immer neue Handler erzeugt werden.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben