2012-04-15 4 views
3

Ich habe eine Test-EJB3-Anwendung erstellt, die auf GlassFish Opensource Edition ausgeführt wird.Langsame "Nachschlage" -Zeit für Glassfish

Ich verbinde mich mit GlassFish vom selben Host (sowohl der Client als auch der Anwendungsserver laufen auf 'localhost').

Ich hole ein Remote (stateful) -Objekt mit InitialContext.lookup(), und dann interagiere ich mit ihm wie es ein normales Java-Objekt wäre.

Das einzige Problem ist der einzige Aufruf, die 15 Sekunden nimmt:

FooRemoteService foors = (FooRemoteService) 
    context.lookup("java:global/FooApp/FooService!test.FooRemoteService"); 

Ich verstehe, dass es irgendeine Art von „Handshaking“ sein und „Initialisierung“, aber das ist so darn langsam.

Der Rest der Interaktion (mehrere Remote-Aufrufe mit vielen serialisierten Objekten werden ausgetauscht) dauert nur etwa 0,1 Sekunden!

Wie kann ich herausfinden, warum es so lange dauert?

+0

Nun, es instanziiert den 'FooRemoteService' beim ersten Mal ... Jede intensive Verarbeitung, die es am Ende macht? – Torious

+0

Überhaupt nicht ... Wenn ich es mit einer lokalen virtuellen Maschine "neu" mache, dauert es einige Millisekunden – gd1

Antwort

0

Ich schlage vor, Sie Ihren ursprünglichen Kontext intanciate Ihrem Host-IP-Angabe, weil es möglich, s, dass Sie die gleiche Anwendung für sie in verschiedenen Host und die EJB-Spezifikation Suche bereitgestellt haben rund um das Netzwerk

Properties props = new Properties(); 
props.put(Context.PROVIDER_URL, "jnp://ip:1099"); 
InitialContext ctx = new InitialContext(props); 

Mit freundlichen Grüßen .

Verwandte Themen