EJB 3.1 @LocalBean vs keine Anmerkung
Ich verstehe die Differenz zwischen der lokalen Ansicht, remote-Ansicht und no-interface-view. Ich verstehe einfach nicht, was ist der Unterschied zwischen "nicht anzeigen" (keine Anmerkung) und no-interface-view. Und außerdem, warum sollte ich kommentieren mein interface mit @Local
? Was, wenn ich nicht mit dem interface überhaupt, gibt es einen Unterschied?
InformationsquelleAutor der Frage VaclavDedik | 2012-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Regeln sind (aus dem Gedächtnis):
@LocalBean
annotation -> bean hat ein no-interface-view@Local
annotation -> bean hat eine lokale Ansicht@Remote
annotation -> bean hat eine remote-AnsichtSo, mit
@LocalBean
und verwenden keine Anmerkung sind beide Wege, um ein no-interface-view. Wenn Sie wollen einfach nur ein no-interface-view, dann ist es das einfachste ist, nicht zu kommentieren. Vorausgesetzt du bist nicht auch implementieren keine Schnittstellen.Teil der Grund
@LocalBean
vorhanden ist, fügen Sie ein no-interface-view zu einer Bohne, die auch eine interface-view. Ich Stell mir das Szenario obersten in der spec-Autoren' Geist war einer, wo Sie eine Bohne wie:Wo Sie wollen, setzen Methoden vor Ort, sondern nur der gröbere feinkörnigen
getPreferences()
aus der Ferne. Sie können tun, dass durch die Deklaration einer remote-interface nur die Methode, dann nur slapping@LocalBean
auf der bean-Klasse. Ohne es, würden Sie haben zu schreiben, eine sinnlose lokale Schnittstelle einfach zu, setzen Methoden lokal.Oder, um es zu betrachten anderen Weg, die
@LocalBean
existiert, weil es so etwas wie eine no-interface-view, und die keine-Anmerkung es besteht die Möglichkeit als eine praktische Abkürzung.InformationsquelleAutor der Antwort Tom Anderson
Local/No-interface-Ansichten sind effizienter als remote-EJBs, da Objekte, Referenzen übergeben werden können, um.
InformationsquelleAutor der Antwort Puce
Ich denke, dass die Verwirrung, die Sie/wir fühlen ist ein Ergebnis von Geschichte /rückwärts compitability (sozusagen). Ich kann nicht dicern keinen Unterschied (außer, dass die Spezifikation. erfordert Implementierungen eine Schnittstelle zu erstellen, verwenden wir local-view)
Oracle Blog vor release von EJB 3.1
InformationsquelleAutor der Antwort esej
Wenn Sie daran interessiert sind, mehr technische details, lassen Sie mich sagen, was wirklich Los ist....
Sie haben keinen Zugriff auf EJB-Objekt direkt, es heißt, Sie haben nicht die Referenz (Adresse) der aktuellen EJB-Objekt.
Wenn Sie die Suche oder Spritzen Sie Ihre EJB-container stellt ein Objekt bereit, als AUFTRAGGEBER für das EJB (wir nennen proxy oder Wrapper) und rufen Sie Ihre business-Methoden, die als proxy-Objekt. (Das ist, warum Sie sollten nicht neues Stichwort zu erstellen-Objekt EJB-class)
Nun, für jede Art von Annotationen, container erzeugt verschiedene Art von Proxys mit verschiedenen Methoden und Funktionalitäten.
@LocalBean
(oder keine Anmerkung)Das proxy-Objekt hat:
setOptionalLocalIntfProxy()
getSerializableObjectFactory()
@Local
Sie proxy-Objekt lokaler Aufruf und die Art der
com.sun.proxy
So hat es:getSerializableObjectFactory()
isProxyClass()
getProxyClass()
getInvocationHandler()
newProxyInstance()
@Remote
Sie Wrapper-Objekt remote-Anruf, und es hat:
readResolve()
writeReplace()
getStub()
getBusinessInterfaceName()
InformationsquelleAutor der Antwort Ali Parvini