2009-11-06 7 views
12

Ich lerne EJB3 und ich bin nur neugierig, wenn es bequem ist, SFSB zu verwenden? Ich kann kein schönes Beispiel finden, wenn SFSB wirklich ein komplexes Problem löst.Warum Stateful Session Beans verwenden?

Eigentlich sehe ich, dass SLSB als Web-Services verwendet werden kann und das ist praktisch. Aber ich weiß nicht, wann ich SFSB benutzen soll. Ich sehe nur Probleme damit, weil wir etwas darüber lernen sollten, wir sollten Code schreiben, der aus Annotationen etwas weniger als komplett besteht, wir sollten nerviges Nachschlagen verwenden ... und wir bekommen nichts Gutes im Gegenzug.

Zum Beispiel können wir nicht SFSB von SLSB verwenden, weil statusbehaftete Objekte nur aus statusbehafteten Kontext verwendet werden können. Wir können DI nicht in Servlets verwenden, stattdessen sollten wir SFSB-Instanzen manuell mit einem JNDI-Lookup erstellen und dann in das HttpSession-Objekt einfügen. Es kann kein Web-Service sein.

Der einzige Vorteil, den ich in SFSB sehen kann, ist eine Transaktionsverwaltung. Aber ich denke, es ist selten, wenn wir wirklich eine Transaktion brauchen und wir brauchen keine DB. Ich kann mir vorstellen, dass es wirklich nützlich sein kann, wenn wir unsere Daten in einer XML-Datei speichern und die Transaktionsverwaltung in SFSB verwenden, um nicht relationale Datenbanken zu verwalten.

Ich bin mir fast sicher, dass ich total falsch liege, also gib mir ein paar wirklich nette Beispiele für die Verwendung von SFSB.

+0

Gewinn oder Nutzen? –

+0

ist es wirklich erfüllt?) – Roman

Antwort

8

Ich lerne ejb3 und ich bin nur neugierig, wenn es bequem ist, SFSB zu verwenden? Ich kann kein schönes Beispiel finden, wenn SFSB wirklich ein komplexes Problem löst.

Sie meinen wie ein Einkaufswagen? Das ist die offensichtliche Antwort, die ich mir vorstellen kann.

Eigentlich sehe ich, dass SLSB als Web-Services verwendet werden kann und das ist praktisch.

Sie können sich EJBs als eine Möglichkeit vorstellen, verteilte Dienste bereitzustellen, aber seien Sie vorsichtig. Der Begriff "Web-Services" lässt die meisten Leute über "SOAP-basierte Web-Services mit HTTP-Protokoll" nachdenken, und das ist nicht das, was Sie in einem SFSB haben.

Aber ich weiß nicht wann SFSB zu verwenden. Ich sehe nur Probleme damit, weil wir etwas darüber lernen sollten, wir sollten Code schreiben, der aus Annotationen etwas weniger als komplett besteht, wir sollten nerviges Nachschlagen verwenden. Und wir bekommen nichts Gutes im Gegenzug.

Dieser Absatz ist verwirrend, aber ich denke, Sie sagen, dass Sie EJBs nicht mögen.

Zum Beispiel können wir SFSB nicht von SLSB verwenden, da statusbehaftete Objekte nur aus statusbehafteten Kontext verwendet werden können.

Richtig, sie ergänzen sich. Sie verwenden SFSB für Anwendungsfälle, bei denen der Status "Warten auf" zwischen den Aufrufen beibehalten werden muss.

Wir können DI nicht in Servlets verwenden, statt dessen sollten wir manuell SFSB-Instanzen mit Hilfe von Lookup erstellen und dann in das HttpSession-Objekt einfügen. Es kann kein Web-Service sein.

Woher kommen die Servlets?

Der einzige Gewinn, den ich in SFSB sehen kann, ist ein Transaktionsmanagement. Aber ich denke, es ist selten, wenn wir wirklich eine Transaktion brauchen und wir brauchen keine DB. Ich kann annehmen, dass es wirklich nützlich sein kann, wenn wir unsere Daten in xml-Datei speichern und Transaktionsverwaltung in SFSB verwenden, um nichtrelationale DB zu simulieren.

Ich denke, Sie sind völlig von der Basis hier. Session-Beans sind diejenigen, die über Arbeitseinheiten und die Verwaltung von Transaktionen Bescheid wissen. Sie müssen wahrscheinlich mit Entity-Beans arbeiten, um etwas von diesem Zustand beizubehalten, wenn der Anwendungsfall abgeschlossen ist. Transaktionen sind also nicht so ungewöhnlich, wie Sie zu denken scheinen.

Ich bin mir fast sicher, dass ich total falsch liege, also gib mir ein paar wirklich schöne Beispiele für die Verwendung von SFSB.

Was sind Ihre Erwartungen? Dass jemand SFSB arbeiten wird? Ich werde das nicht machen, hauptsächlich weil ich kein großer EJB-Fan bin. (Ich mache alles, was Sie anspielen und mehr mit Spring.)

Aber seien Sie versichert, dass SFSB manchmal nützlich sind. Der Einkaufswagen ist das offensichtliche Beispiel. Sie benötigen einen Platz, um Artikel im Einkaufswagen zu warten, bis der Kunde sich für den Kauf entscheidet. SFSB ist eine Möglichkeit, dies zu erreichen.

0

Es ist nur eine Frage des Designs, zwischen einer zustandslosen und einer staatenlosen Architektur zu wählen.

In den meisten Fällen ist zustandsloses Design vorzuziehen, da es einfacher ist.

Obwohl es am Anfang einfacher zu verstehen ist, führt der Aufbau staatenloser Anwendungen zu einer Reihe von Problemen (viele zustandslose Webdienste, Feder Singleton, etc ...), wodurch die Anwendung auf lange Sicht weniger verwaltbar wird.

ich bevorzuge es, wenn möglich stateful Anwendungen zu entwerfen.

Stateful Session Bean ist ein Weg, es zu tun. Frühlingsprototyp oder web-scoped Bohne andere.

überprüfen Sie auch jboss Naht Rahmen.

+0

Stateless Design ist bevorzugt, da es einfacher ist. Diese Aussage ist falsch. Diese Entscheidung wird auf Anforderung getroffen, beide haben große Veränderungen in Bezug auf das Geschäft. – Tony

Verwandte Themen