2014-02-19 7 views
7

Ich habe eine einfache Frage, aber ich kann keine Antwort für Java EE 6 finden!Sollte eine Stateful Session Bean Serializable implementieren

Sollte eine Stateful Session-Bean Serializable implementieren oder nicht?

Ich getestet mit und ohne java.io.Serializable zu implementieren, und es gibt keine anderen und keine Fehler.

Mein Gefühl sagt mir, dass ein Stateful-Session-Bean Serializable implementiert, muss, weil es in einer langfristigen Sitzung beibehalten werden ...

Antwort

4

Nein, es muss nicht wie die Spezifikation erfordert nicht, dass.

können Sie die EJB-Spezifikation aus herunterladen und prüfen: https://jcp.org/en/jsr/detail?id=318

+1

Ok, aber warum? Wird es nicht bestehen bleiben? – Gatschet

+1

Ich glaube, Sie verstehen die Bedeutung von "Stateful" hier falsch. Es bedeutet nur, dass die Bean den Status zwischen Clientaufrufen beibehält. Dies bedeutet nicht, dass die Bean selbst als 'java.io.Serializable' auf die Festplatte serialisiert wird. –

+0

Es gibt einen Absatz in der Spezifikation: "Der Container führt die Java-Programmiersprache Serialisierung (oder seine Entsprechung) des Zustands der Instanz (und deren Interzeptoren) aus, nachdem sie die PrePassivate-Methode für die Instanz und ihre Interzeptoren aufgerufen hat. ", wie Sie sehen können, ist der Staat + Interzeptoren, die serialisiert sind. – Sergio

1

Es hängt davon ab, wie Sie es verwenden werden:

@Remote: Bezeichnet eine Remote-Business-Schnittstelle. Methodenparameter werden als Wert übergeben und müssen als Teil des RMI-Protokolls serialisierbar sein.

@Local: Kennzeichnet eine lokale Geschäftsschnittstelle. Methodenparameter werden als Referenz von dem Client an die Bean übergeben.