Remote Referenz nicht freigeben.

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Angenommen, ich hole mir eine Referenz einer SessionBean (stateless)
auf dem Client und gebe diese während der gesamten Programmlaufzeit
nicht frei. Also kein Aufruf von "remote.remove()"

Jetzt mal abgesehen davon, dass es u.U. dazu kommt, dass eine solche
Referenz nicht mehr gültig sein kann...
Belastet es den Server, wenn man dies tut? Insbesondere, wenn da hunderte
oder gar tausende von Clients auf einen AppServer zugreifen und nichts
freigeben?

Der GarbageCollector bei RMI hält auch serverseitig einen Referenzzähler,
so dass referenzierte Objekte nicht einfach entfernt werden. Bei SSB werden
serverseitig mehrere Instanzen erzeugt (SSB Pool), die dann bei Bedarf an
die "Aufrufer" verteilt werden. Das ganze spielt sich dann nur innerhalb eines
einzelnen Methodenaufrufs ab bzw. es ist nicht garantiert, dass zwei
aufeinanderfolgende Aufrufe die gleiche Instanz eines SSB erreichen.
(spielt auch keine Rolle bei SSB)

Guter Still ist sowieso, alles, was nicht mehr benötigt wird, frei zu geben.
Dennoch würde es mich interessieren.

Was meint Ihr?
 

Bleiglanz

Gesperrter Benutzer
bei einer stateless ist es eh wurscht, weil die nach jedem Methodenaufruf in den Pool zurückgelegt werden kann

trotzdem sinnvoll aus Stilgründen
 
G

Guest

Gast
Die SSB's werden in den Pool geworfen, klar, da sind aber noch
paar Schichten dazwischen (mindestens RMI und die Proxies des Containers).
Hält der Server bzw. der EJB Container nicht unnötig viele Proxies
im Speicher, wenn man die Referenzen nicht freigibt?
Nach einem Methodenaufruf bleibt die Verbindung ja immer noch
erhalten, egal was serverseitig mit den SSB's geschieht.

Wenn ich mich recht erinnere, war es bei RMI immer so, dass
serverseitig erst dann die Skeletons freigegeben werden, wenn
die Verbindung zum Client unterbrochen oder clientseitig beendet
wird (Stub freigegeben).

???:L
 

Bleiglanz

Gesperrter Benutzer
stimmt - hängt aber wahrscheinlich davon ab, mit welchem Protokoll der Appserver arbeitet (die wenigsten nehmen das klassische RMI, viele haben da eine Eigenentwicklung im Einsatz)

wahrscheinlich ist es aus diesem Grund (Connections usw.) doch wichtig, IMMER das remove aufzurufen?!
 
G

Guest

Gast
Bleiglanz hat gesagt.:
stimmt - hängt aber wahrscheinlich davon ab, mit welchem Protokoll der Appserver arbeitet (die wenigsten nehmen das klassische RMI, viele haben da eine Eigenentwicklung im Einsatz)

wahrscheinlich ist es aus diesem Grund (Connections usw.) doch wichtig, IMMER das remove aufzurufen?!
Meinst Du mit Eigenentwicklungen unterschiedliche SocketFactories? Ich würde eher darauf tippen,
dass die meisten einen AppServer so einsetzen, wie er kommt. Meist also mit dem klassischen RMI.

Ich mache mir deswegen Gedanken darüber, da ich in einigen Projekten auf folgendes
Problem gestossen bin.
Mehrere unabhängige Komponenten greifen über eine zusätzliche Schicht (clientseitig)
auf eine SessionBean zu und die Frage, welche der Komponenten für das Beenden
der Verbindung zuständig ist, bleibt ungeklärt.
Schliessen der Verbindung mit remove() nach jedem Methodenaufruf ist nicht so sexy,
da es unnötig viele Initialisierungen der Schnittstelle erfordert.

Fällt Dir eine sichere Methode ein, mit der man feststellen kann, wie oft eine Instanz einer Klasse
referenziert wird bzw. noch interessanter, wann eine Instanz nicht mehr referenziert wird?
Leider gibt es in Java keine Destruktoren und auf die finalize() Methode ist kein Verlass.
ReferenceQueues sind in diesem Zusammenhang ein Overkill und machen die Sache nur
unnötig kompliziert.
 
G

Guest

Gast
Danke. Ohh, im TSS Forum habe ich nicht gesucht. :autsch:
Insbesondere die vorletzte Antwort deutet darauf hin, dass es sogar
von SUN bestätigt wurde.

OK, hat sich erledigt. :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Live logging von Remote Allgemeines EE 1
J EJB / Interface / Class Annotationen / Statless & Stateful / remote & local Allgemeines EE 7
D Remote Aufruf von EJB funktioniert nicht Allgemeines EE 1
FINF_AW_Alex remote Glassfish Library unverträglichkeit Allgemeines EE 0
J SessionBean Remote Allgemeines EE 2
T Einstieg in J2EE: Remote auf Bean zugreifen Allgemeines EE 11
C JMS Remote Client Allgemeines EE 5
byte Remote Lazy Loading mit Spring und Hibernate Allgemeines EE 5
thor_norsk Glassfish Server unter Windows startet nicht! Allgemeines EE 20
pkm Root resource - Klassen werden nicht gefunden. Allgemeines EE 2
M doGet()-Methode wird nicht geladen Allgemeines EE 3
Dimax Servlet läuft in Eclipse, aber nicht im Browser Allgemeines EE 74
J Ich kann Java JDK nicht downloaden Allgemeines EE 6
G Unit Test einer JavaEE Anwendung schlägt fehl. JNDI Name nicht gefunden. Allgemeines EE 3
C Servlet Tomcat/Jersey findet REST-Service nicht Allgemeines EE 3
I XML mit JAXB und Annotations aufbauen klappt nicht wie gewollt Allgemeines EE 5
B Datenbank Resource wird nicht gefunden Allgemeines EE 1
M JSF Binding greift nicht Allgemeines EE 0
OnDemand JSF Stacktrace wird nicht korrekt ausgegeben Allgemeines EE 1
D Websocket nach Decoder Annotation nicht mehr erreichbar Allgemeines EE 0
S JEE installation geht nicht? Allgemeines EE 6
D Einfaches Java Projekt funktioniert nicht Allgemeines EE 3
J Mit @Schedule annotierte Methode wird nach einer Weile nicht mehr ausgeführt (JBoss AS 7.2) Allgemeines EE 0
U @Inject funktioniert nicht Allgemeines EE 3
T wie static aber doch nicht ... Allgemeines EE 8
C Double Eingabe Felder sind nicht Leer Allgemeines EE 1
F SessionScoped und Stateful EJB: Werte werden nicht behalten Allgemeines EE 3
L JSF Primefaces breadcrumb - erstes Element funktioniert nicht Allgemeines EE 0
D Jboss löscht Archiv nicht beim Redeployed Allgemeines EE 3
M Konzeptfrage: Applicationserver, oder nicht? Allgemeines EE 4
E CDI mit verschiedenen Jars in EAR klappt auf Jboss AS 7.1.1.Final nicht Allgemeines EE 8
M Daten aus der Resource werden nicht übernommen Allgemeines EE 4
R MavenDependencyResolver nicht auflösbar Allgemeines EE 5
D [Glassfish EJB] OneToMany geht nicht Allgemeines EE 7
G JSF Beans nicht angezeigt Allgemeines EE 2
S JSF und CSS: background:url() geht nicht Allgemeines EE 2
S Eclipse: Teilmodule beim Testen werden nicht gestartet Allgemeines EE 2
H Bean läuft unter GlassFish, aber JBoss nicht Allgemeines EE 5
aze Tomcat:Error Pages werden nicht angezeigt Allgemeines EE 4
M JSP Ausgabe funktioniert nicht Allgemeines EE 4
F Webanwendung startet nicht richtig Allgemeines EE 6
J JBoss, Eclipse, Webseite wird nicht angezeigt? Allgemeines EE 4
B Tomcat6/axis1.4 kann nicht auf Dateien zugreifen Allgemeines EE 3
P Displaytag findet getter-Methode(n) nicht! Allgemeines EE 3
N Tomcat funktioniert nach shutdown/startup nicht mehr korrekt Allgemeines EE 9
Y JSF EJB wird nicht injected Allgemeines EE 18
F REST-Service: GET erkennt Veränderungen an der DB nicht. Allgemeines EE 2
T Applet mit XmlRpc läuft lokal nicht vollständig Allgemeines EE 4
S m2eclips + strust2 == geht nicht Allgemeines EE 5
C TransferObjects's in EJB 3 klappt nicht Allgemeines EE 2
P Kriege JAAS einfach nicht zum Laufen Allgemeines EE 3
A Servlet erkennt request Objekt nicht Allgemeines EE 8
A Java Tomcat findet Website nicht Allgemeines EE 8
D JSF-Tags können nicht aufgelöst werden ? Allgemeines EE 2
D Debug Modus im Glassfish 2.1 plötzlich nicht mehr möglich Allgemeines EE 2
J Einige Klassen werden nicht resolved Allgemeines EE 7
P Eclipse Tomcat Plugin funktioniert nicht mit externem TC-Server? Allgemeines EE 4
P Prozess wird nicht beendet Allgemeines EE 4
B HttpSession bekommen wenn nicht in Servlet Allgemeines EE 8
J Dinge, die man nicht tun sollte Allgemeines EE 6
I Klassen werden nicht für Import erkannt eclipse EE Allgemeines EE 2
S In Eclipse werden die "Servlet-Klassen" nicht gefu Allgemeines EE 2
T web-app läuft nicht Allgemeines EE 5
D ArrayList behält Werte nicht Allgemeines EE 2
D musicplayer spielt mit threads nicht mehr ab Allgemeines EE 3
0 myfaces staret nicht Allgemeines EE 1
A Warum werden die Managed Beans nicht erkannt? Allgemeines EE 3
A Tomcat startet nicht, Einstellungsfehler? Allgemeines EE 3
S MyFaces Sandbox: inputSuggest Komponente furnktioniet nicht Allgemeines EE 11
A cascade funzt nicht Allgemeines EE 8
K JSF Test Anwendung ausführen funktioniert nicht Allgemeines EE 7
B Faces Context nicht gefunden Allgemeines EE 4
M JSF Bilder werden wegen jsessionid nicht gefunden (nur IE) Allgemeines EE 6
K Download Dialog startet nicht Allgemeines EE 2
M Servlet lässt sich nicht aufrufen Allgemeines EE 6
D warum ist gwt nicht beliebt ? Allgemeines EE 2
I Tomahawk funktioniert nicht Allgemeines EE 3
A action-Methode wird nicht aufgerufen Allgemeines EE 7
M taglib wird nicht gefunden Allgemeines EE 9
N JSF + Facelets: Datatable wird nicht angezeigt Allgemeines EE 1
G EJB - EJB wird nicht ins Servlet geladen Allgemeines EE 3
M Resourcen werden in JSP nicht gefunden Allgemeines EE 12
S Verdammt, MyFaces Sandbox 'läuft' nicht Allgemeines EE 7
T Ich raff es nicht . NotSerializableException Allgemeines EE 5
M Servlets | work - Klassen nicht im WAR File Allgemeines EE 5
E HTTP-GET// -->Eine URL aufrufen, aber nicht dahin navigie Allgemeines EE 2
P JSF Seite wird nicht gestartet Allgemeines EE 4
J Direktaufruf einer jsp nicht zulassen Allgemeines EE 2
C WAS findet Jars in EAR nicht? Allgemeines EE 2
L Servlet kann Funktion nicht aufrufen Allgemeines EE 3
B Parameterübergane von Servlet an JSP funktioniert nicht ? Allgemeines EE 2
I JSP - Sinnvoll oder nicht? Allgemeines EE 5
S JSF: Bei Navigation Bilder / Styles nicht mehr verfügbar Allgemeines EE 1
F webanwendung läuft nicht auf Tomcat Allgemeines EE 2
S JBoss gibt POI API nicht frei Allgemeines EE 8
B FileInputStream(sPath); file wird nicht gefunden Allgemeines EE 5
F MyFaces und Tiles: <tiles:insert> wird nicht erkannt Allgemeines EE 10
N JSP kann Servlet nicht aufrufen! :-( Allgemeines EE 2
S Löschen einer Entity kaskadiert nicht auf Collection (1:n) Allgemeines EE 2
S kann eigenes object nicht von applet zu servlet senden Allgemeines EE 3

Ähnliche Java Themen

Neue Themen


Oben