Objekte aus EJB an Client schicken

cew777

Mitglied
Hallo NG,

ich habe eine Java-Client-Applikation, die ein Stateful Session Bean benutzt und von diesem eine Methode aufruft, die ein Objekt zurückliefert.

Ich rufe nun die EJB-Methode in einer Schleife viele 10.000 Mal auf. Ich gebe alle 1000 Schleifendurchläufe eine Meldung aus. Dabei ist festzustellen, dass das Abholen für 1000 Objekte immer länger dauert, je länger das Programm läuft.
Auf dem Server wurden auch Meldungen ausgegeben. Die Verarbeitung im Bean beansprucht eine konstante Zeit.
Die Objekte werden (natürlich) per Serialisierung vom Server auf den Client übertragen.
Ich habe daher mittlerweile die Deserialisierung im Client in Verdacht. Aber wieso steigt deren Zeitbedarf an?

Um die Verwirrung (noch) größer zu machen: Das o.a.Phänomen ist zu beobachten unter Linux(64bit) mit JavaRE 1.6.0.27.
Führt man das gleiche Client-Programm auf Windows(32 bit) mit JavaRE 1.6.0.14 aus, ist die Verlangsamung nicht zu beobachten - die Objekte werden in konstant bleibender Zeit ausgelesen!

Kann mir jemand helfen? Ich weiss nicht ob ich hier im richtige Forum bin - denn ich bin mir nicht sicher ob es überhaupt an dem JavaEE-Aufruf liegt oder ob wir es mit einem Bug aus Java SE zu tun haben, der die (De)serialiserung betriftt!?

Danke für Eure Hinweise und Ideen!

Beste Grüße

C.Ed
 

FArt

Top Contributor
Tja, da musst du wohl mal mit einem Profiler ran, wenn du wirklich wissen möchtest was da passiert. Zumindest mal ordentliches Logging.

Wo geht die Zeit verloren? Evtl. GC von vielen Objekten? Auf dem Server? Auf dem Client? Was ist das für ein AS und über welches Protokoll wird dort EJB Kommunikation realisiert? ... das geht noch lange so weiter...
 

cew777

Mitglied
Danke schon mal für die Antwort!

Ich habe jetzt mein Logging noch erweitert. In der Klasse deren Objekte übertragen werden, hab ich die Methoden readObject und writeObject überschrieben und darin die Zeit gemessen, die zum Serialisieren/Deserialisieren benötigt wird.

Das Serialisieren auf dem Server läuft konstant in durchschnittlich < 1 ms. Das Deserialisieren auf dem Client braucht mit fortlaufender Laufzeit des Client allerdings immer länger!

Ich hab mir nun auch mal die JConsole auf dem Client angeschaut - da sieht alles normal aus - also keine auffällig hohe Zahl oder lang andauernde GCs.

Mein Application Server ist ein JBoss6.0.
Als nächstes werde ich allerdings mal Objekte von der Platte deserialisieren und den Zugriff auf den JBoss ausklammern um zu schauen ob das Problem dann auch noch besteht.

Wie gesagt, unter Windows32 mit einer alten JRE (1.6.0.14) besteht das Problem nicht - nur unter Linux64 mit JRE 1.6.0.27!
:bahnhof:
 

cew777

Mitglied
Probier auf Windows doch lieber erstmal die gleiche JRE, wie auf Linux. Ab 1.6.0_26 wurden so viele Sachen verschlimmbessert, daß es evtl. daran liegt.

Hab ich jetzt gemacht. Keine Änderung: Unter Windows werden die Daten in konstanter Zeit gelesen.
Kann es einen Unterschied machen, dass auf Linux mit der 64bit-Version gearbeitet wird??
 

cew777

Mitglied
Es kann auch nur der Unterschied Linux vs. Windows sein. Ich habe in dem Zusammenhang schon die blödsinnigsten Sachen gesehen und deshalb würde mich das auch nicht mehr wundern.

Du hast recht..

Wir haben jetzt auch die 32bit-JRE-Version auf Linux getestet und dort ist das Problem zwar auch da, aber schon viel besser - weil die Verzögerung kleiner - als bei der 64bit-Version.
Es ist aber immernoch nicht so gut wie unter 32bit-Windows. Naja, muss man wahrscheinlich so hinnehmen.

Danke für Eure Antworten! :toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Serverseitige Objekte in JSF Allgemeines EE 0
OnDemand Performance Probleme wegen vieler Objekte Allgemeines EE 3
N Objekte zwischen zwei Application Contexts austauschen Allgemeines EE 19
K Objekte in ein neues Formular laden und dort verändern JSF? Allgemeines EE 8
T Zugriff auf Session-Objekte in JSP Allgemeines EE 2
G Wie Objekte von JSP nach Servlet? Allgemeines EE 4
T Struts und Objekte in Comboboxen Allgemeines EE 4
T Objekte an Taglib übergeben Allgemeines EE 7
D JSP - Datenmodell - Objekte speichern Allgemeines EE 6
LimDul Rest-Client/DTOs aus JSON Ergebnis generieren Allgemeines EE 3
I Client Desktop -> Update in Browser? Allgemeines EE 0
Yamanuchi Glassfish 4 : Client Anzahl restriktieren Allgemeines EE 2
R Web-Applikation mit GWT- und Android-Client Allgemeines EE 0
B Ordner von Client an Server senden Allgemeines EE 2
J Client Request vom Server aus. Allgemeines EE 2
H SQL Daten von Webservice an Client übergeben Allgemeines EE 3
T Client IP ermitteln Allgemeines EE 3
T JMX und ServiceMBean - Zugriff mittels Client Allgemeines EE 2
S Rich Client Application mit Eclipse/WebLogic/EclipseLink/EJB3 Allgemeines EE 2
C JMS Remote Client Allgemeines EE 5
G EJB client Allgemeines EE 4
W JBoss log dependencies aus jbossall-client.jar Allgemeines EE 7
W Client als Jar und die vielen Abhängigkeiten Allgemeines EE 2
P unique ID am Client Allgemeines EE 3
G XML vom Server zum Client Allgemeines EE 4
D Wohin mit Resourcen (Bilder, txt Dateien) im Application Client Allgemeines EE 3
J geschützter Bean zugriff mit einem Rich-Client Allgemeines EE 2
P Client startet viel zu langsam ??? Allgemeines EE 5
MQue Server -> Client zyklische Daten senden Allgemeines EE 20
K Glassfish Application Client Allgemeines EE 4
C EntityBean im GWT-Client Allgemeines EE 2
foobar Client-Jar und JPA-Entities für Remotzugriff Allgemeines EE 12
I Session-Attribute von Client zugänglich? Allgemeines EE 6
M Objektübergabe von Client zum Server Allgemeines EE 11
R EJB Client: Probleme mit der Client.jar Allgemeines EE 2
M "Auto Client-Request" oder Server-Push oder Ajax – Allgemeines EE 2
B Client starten ohne Eclipse Allgemeines EE 4
B Client ausführen mit JBoss v4.2 Allgemeines EE 3
G AnfängerFrage: EJB 3 und Enterprise Client Allgemeines EE 4
M probleme mit client server kommunikation Allgemeines EE 3
K Tomcat als Client nutzen Allgemeines EE 2
K Mail Client Allgemeines EE 2
M PDF im neuen Browserfenster auf Client-Rechner anzeigen Allgemeines EE 5
F Wie heisst das , was der Client als anfrage sendet? Allgemeines EE 3
N Wie heisst das was der Client beim Http Server anfragt? Allgemeines EE 6
G WebService Client: Parameterübergabe Allgemeines EE 9
N Tomcat -> Binary aus DB lesen und an Browser/Client sende Allgemeines EE 9
J Axis Client - Welcher JARs mitliefern? Allgemeines EE 5
B Java-Client für eBaySOAP-API liefert HTTP(400) Bad Request Allgemeines EE 2
L Web-Client - SessionBean - WebService Allgemeines EE 2
A problem mit client Allgemeines EE 3
M EJB-client: jar-Archiv als Export aus Eclipse läuft nicht Allgemeines EE 5
M Entity Beans: Rückgabe von Collectionen an Client Allgemeines EE 2
P Daten von HTML and JSP schicken Allgemeines EE 0
W Eine Form an einen fremden Server schicken. Allgemeines EE 3

Ähnliche Java Themen

Neue Themen


Oben