Java Webservices - ein paar Fragen zur Persistenz

Hallo alle miteinander,

aktuell arbeite ich daran, einen zentralen Java-Webservice umzusetzen, der mithilfe von Axis auf meinem Tomcat laufen soll.
Den Service kann ich prima ansprechen, aber die Zugriffsdauer ist (trotz lokaler Nutzung von Tomcat und dem Client) sehr schlecht.

Nachdem ich einen Logger für die Zugriffe eingebaut habe, fiel mir nun auf, daß alle Logeinträge mehrfach (bis zu 9x) hintereinander vorhanden sind (ja, Logs vorher auch gelöscht :wink: ).
Da kam mir der Gedanke - ist so ein Service überhaupt persistent?
Also, ich meine damit: Ich starte Tomcat und der Service wird direkt mit gestartet & initialisiert, so daß wenn Benutzer auf den Service (Clientseitig durch Applikationen) auf ihn Zugreifen wollen, dies auch immer auf die selbe „Anwendung“/Instanz des Webservices zugreifen.

Trifft dies denn überhaupt zu? So viele Neuinitialisierungen nach jedem Funktionszugriff wie ich nun im Log gesehen habe, lassen eigentlich nur den Schluss zu: Nein, es wird jedes Mal aufs neue die Klasse initialisiert.

Nun wäre dies aber für meine Planung ziemlich tödlich, denn ich wollte einen persistenten Service haben um so Programmen untereinander einen Austausch zu gewährleisten (zunächst erstmal eine kleine „wer-ist-online“-Liste).

Liege ich mit meinen Vermutungen total falsch?
Wenn ja, wie kann ich mein gewünschtes Ergebnis doch noch erzielen? Hat jemand ein paar gute Ratschläge oder Tutorials / Links für mich zu diesem Thema?

Beste Grüße und vielen Dank für alle Mühen im voraus!

Björn

Da kam mir der Gedanke - ist so ein Service überhaupt
persistent?

Nein.

Das würde dem Sinn eines Webservices zuwider laufen und ich kenne keine Implementierung, die so etwas „build in“ liefert. Du könntest natürlich die Logik Deines Webservices dazu aufbohren, eine Persistenz zu unterstützen. Aber dann müsste ja der Benutzer sich beim Aufruf identifizieren. Und irgendwie fühlt sich das nicht richtig an. Wenn Dein Webservice tatsächlich persistent sein soll und auf Benutzerdaten arbeitet, dann würde ich mir eher Gedanken machen, ob ein Webservice der richtige Weg ist.

Also, ich meine damit: Ich starte Tomcat und der Service wird
direkt mit gestartet & initialisiert, so daß wenn Benutzer auf
den Service (Clientseitig durch Applikationen) auf ihn
Zugreifen wollen, dies auch immer auf die selbe
„Anwendung“/Instanz des Webservices zugreifen.

Schau doch auf das offizielle Tutorial von SUN: http://java.sun.com/webservices/docs/1.6/tutorial/do…

Ansonsten noch http://openbook.galileocomputing.de/javainsel8/javai….

Hmm, dann habe ich das ganze Prinzip doch falsch verstanden.
Kein Wunder, dass einige Resultate doch etwas seltsam gewesen sind.

Besten Dank schonmal für die Aufklärung - da muss ich mich direkt noch einmal neu umsehen *seufz*

Gibt es denn so etwas wie „Web-Applikationen“ die die benötigte Funktionalität liefern könnten?
Eine Art „Plugin“ für Tomcat, so daß es sich über ein SOAP-ähnliches Protokoll per URL ansprechen lässt?
Stehe gerade ein wenig auf dem Schlauch - ich hoffe, es ist einigermaßen verständlich. :smile:

Beste Grüße

Björn

Hm, ich weiß jetzt natürlich nicht, was Du damit anfangen willst. Generell ist ein HTTP Request erstmal zustandslos.

Du kannst natürlich im Java EE-Umfeld eine Stateful Session Bean verwenden, allerdings wüßte ich aus Deiner Beschreibung nicht, wie Du sie dann mit Daten füttern bzw etwas abfragen willst. Das klingt für mich nach einer ganz normalen EE Applikation. Bist du gezwungen, eine WS-* Schnittstelle zur Verfügung zu stellen? Oder kannst Du eine EE Applikation mit einer Struts- bzw JSF-Oberfläche erstellen und die Daten dort darstellen?

Im Prinzip kann man natürlich auch die EE Applikation per XML antworten lassen. Je nachdem, was Du jetzt brauchst…

Ist alles geraten und ins Blaue geantwortet. :wink:

1 Like

Ja, sowas in der Art war schon angedacht.

Einen Service bzw. dann wohl eher einen Server zu haben, der Daten speichert und für andere Benutzer bereitstellt.

Als Beispiel:
Benutzer 1 loggt sich ein und wird dann in eine Liste am Server eingetragen. Benutzer 2 loggt sich ein und wird in die Liste eingetragen.
Benutzer 1 bekommt angezeigt, dass Benutzer 2 auch im System ist.

So etwas in der Art wollte ich machen - eine zentrale Benutzerverwaltung in einem mehrbenutzer-System.
Dabei wäre es toll, wenn man die Verbindung ähnlich leicht hinbekommen würde, wie bei einer per WSDL-Definierten Schnittstelle und Requests an eine Webservice.

Beste Grüße

Björn